# Giới thiệu
- CSLD MySQL
# Vấn đề
Config & Security
# Grant privileges on IP address
grant all privileges on dbname.* to 'username'@'IP' identified by 'login'
# SELECT privileges
GRANT SELECT ON dbname TO 'username'@'IP';
# Remove permission on db
revoke all privileges on dbname.* from 'username'@'%';
DROP USER 'root'@'%';
Ex: revoke all privileges on dbname.* from 'username'@'IP';
# Delete user
DELETE FROM mysql.user WHERE User='diendannhatban'
DROP USER 'diendannhatban'@'localhost'
# Check user list
select user,host from mysql.user;
# Get user permission
show grants for `username`;
# Change root password
# MySQL 5.7.6 and later:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MatKhauMoi';
UPDATE mysql.user SET Password=PASSWORD('MatKhauMoi') WHERE User='root'; FLUSH PRIVILEGES; exit;
# Reset root password
sudo /etc/init.d/mysql stop
sudo mysqld --skip-grant-tables &
mysql -u root mysql
UPDATE mysql.user SET Password=PASSWORD('MatKhauMoi') WHERE User='root'; FLUSH PRIVILEGES; exit;
sudo /etc/init.d/mysql start
# MySQL 5.7.5 and earlier:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
# Upgrade mysql
mysql_upgrade
1 COUNT
- Đếm nếu có data trùng trong SQL table
SELECT name, email, COUNT(*)
FROM users
GROUP BY name, email
HAVING COUNT(*) > 1
2 LEFT JOIN (No match)
SELECT t1.ID
FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.ID = t2.ID
WHERE t2.ID IS NULL
3 Dump database schema
Syntax: mysqldump -d (Chỉ lưu cấu trúc của bảng dữ liệu)
mysqldump -d -h [hostname] -u [dbuser] -p [dbname] > schema.sql
4 Đổi mật khẩu người dùng
MySQL
mysqladmin -u root password NEWPASSWORD
mysqladmin -u root -p'oldpass' password newpass
# or
mysql> update user set password=PASSWORD("NEWPASSWORD") where User='diendannhatban';
5. Update tất cả row nếu khớp với điều kiện
UPDATE table_name
SET column01=value01,column02=value02,...
WHERE column_name=valu;
6. Xoá nhiều table trong cơ sở dữ liệu (SQL, MySQL) cùng một lúc theo cách wildcard (*)
* Lưu ý: Backup dữ liệu trước khi thực hiện
Phương pháp này sẽ có 2 bước.
Bước 1: Tự động tạo ra câu lệnh SQL để xoá các table tương ứng cần xoá (search wildcard với từ khoá các bảng muốn xoá)
SELECT CONCAT( 'DROP TABLE `', TABLE_NAME, '`;' ) AS query
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'diendannhatban_%'
Bước 2: Thực thi những câu lệnh SQL trả về từ bước 1
DROP TABLE `diendannhatban_links`;
DROP TABLE `diendannhatban_options`;
...
7. Xuất câu lệnh SELECT ra file .txt hoặc .sql
mysql -e "select * from Table" -u user -pxxxxxxxx db > filename.txt
mysqldump --opt -h 127.0.0.1 -u user -p --no-create-info --where id=1 database table > filename.sql
# Search kw in table concat multifle fields
select id,name,birthday from users where Concat(internship_experience) like "%string%";
select id,name,birthday from users where internship_experience like "%string%";
select id,name,birthday from users where Concat(internship_experience) like "%string%";