一、賬號
- 用戶賬號
MySQL用戶賬號組成: 'USER'@'HOST'
USER: 用戶名。
HOST: 來源主機地址,IP、主機名、通配符(%和_)。
- 創建用戶賬號:
mysql> CREATE USER 'USER'@'HOST';
mysql> CREATE USER 'USER'@'HOST' IDENTIFIED BY 'PWD';
- 用戶重命名:
mysql> RENAME USER old_username TO new_username;
- 刪除用戶:
mysql> DROP USER 'USER'@'HOST';
mysql> DELETE FROM mysql.user WHERE user=xxx AND host=xxx;
- 修改密碼:
方式一:
mysql> SET PASSword FOR 'USER'@'HOST'=password('PWD');
方式二:
mysql> ALTER USER 'USER'@'HOST' IDENTIFIED BY 'PWD';
mysql> ALTER USER 'USER'@'HOST' IDENTIFIED WITH mysql_native_password BY 'PWD';
方式三:
mysql> UPDATE mysql.user SET password=PASSWORD('PWD') WHERE user=xxx AND host=xxx;
方式四:
mysqladmin -uxxx -pxxx -hxxx password 'PWD'
- 忘記root密碼找回步驟:
(1)、重新啟動mysqld進程, 添加選項 --skip-grant-tables
# mysqld_safe --defaults-file=/data/mysql/mysql3306/my.cnf --skip-grant-tables &> /dev/null &
(2)、修改管理員密碼
(3)、關閉mysqld進程, 移除上述選項, 重啟mysqld
# mysqld_safe --defaults-file=/data/mysql/mysql3306/my.cnf &> /dev/null &
- 清理無用的MySQL用戶:
mysql> SELECT user,host FROM mysql.user;
mysql> DROP USER "root"@"::1"
mysql> DROP USER ""@"localhost"
......
mysql> flush privileges;
二、權限
- 添加授權:
方法一:
mysql> CREATE USER 'USER'@'HOST' IDENTIFIED BY 'PWD';
mysql> GRANT ALL PRIVILEGES ON dbname.* TO 'USER'@'HOST';
方法二:
mysql> GRANT ALL PRIVILEGES ON dbname.* TO 'USER'@'HOST' IDENTIFIED BY 'PWD';
- 查看指定用戶授權:
mysql> SHOW GRANTS FOR CURRENT_USER;
mysql> SHOW GRANTS FOR 'USER'@'HOST';
- 回收權限:
mysql> REVOKE priv_type,... ON dbname.* FROM 'USER'@'HOST';
- 線上環境用戶授權建議:
權限控制:
主庫權限: select,insert,update,delete
從庫權限: select
mysql> GRANT select,insert,update,delete ON db_name.* TO 'USER'@'HOST' IDENTIFIED BY 'PWD';
mysql> GRANT select ON db_name.* TO 'USER'@'HOST' IDENTIFIED BY 'PWD';
用戶設置:
方案一: 用戶名密碼都一樣,僅有服務器HOST不一樣
主庫: 用戶名username, 密碼pwd, 端口3306, 服務器HOST host1
從庫: 用戶名username, 密碼pwd, 端口3306, 服務器HOST host2
方案一: 用戶名密碼都不一樣,服務器HOST不一樣
主庫: 用戶名username_rw, 密碼pwd1, 端口3306, 服務器HOST host1
從庫: 用戶名username_r, 密碼pwd2, 端口3306, 服務器HOST host2