# 1.用戶管理 | 用戶管理的特殊命令: 創建用戶 create usr '用戶名'@'IP地址' identified by '密碼'; 刪除用戶 drop user '用戶名'@'IP地址'; 修改用戶 rename user '用戶名'@'IP地址'; to '新用戶名'@'IP地址';; 修改密碼 set password for '用戶名'@'IP地址' = Password('新密碼') # 2.權限管理 | 權限管理: 默認,沒有權限 grant 權限 on 數據庫.表 to '用戶'@'IP地址' ---- 授權 revoke 權限 on 數據庫.表 from '用戶'@'IP地址' ---- 取消權限 show grants for '用戶'@'IP地址' ---- 查看權限 # 附:IP段支持通配符:% # 例:192.168.36.% # 3.設置其他遠程登錄root用戶權限 1.查看root用戶的host,默認只 能被本機ip(127.0.0.1)登錄 # select host, user from user where user='root'; 2.更新root用戶信息,讓root用戶可以被任意主機IP登錄 GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION; 3.使修改生效 # flush privileges; 4.其他主機即可遠程登錄到本機MySQL root用戶, -h 表示遠程登錄的目標主機ip # mysql -uroot -pmysql -h 192.168.xx.xxx 5.查看mysql系統表 # select host, user from mysql.user;1.新建普通用戶 CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; 或者: GRANT SELECT, UPDATE ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password'; 或者: INSERT INTO user(Host, User, Password) VALUES('localhost', 'username', PASSWORD('password')); # 報錯:ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value # 查看執行結果 SELECT Host, User, Select_priv, Update_priv FROM MySQL.user where user='username'; 或者: SELECT Host, User, Password FROM user; 2.刪除用戶及權限 DROP USER 'username'@'localhost'; # 用戶對話關閉后才生效; 或者: DELETE FROM MySQL.user WHERE host='localhost' and user='username'; 3.root用戶修改自己的密碼 mysqladmin -u username -h localhost -p password 'password'; 或者: UPDATE mysql.user set Password=PASSWORD('password') WHERE User='root' and Host='localhost'; FLUSH PRIVILEGES; 4.root用戶修改普通用戶密碼 SET PASSWORD FOR 'user'@'host'=PASSWORD('password'); 或者: UPDATE MySQL.user SET Password = PASSWORD('password') WHERE User='password' AND Host='hostname'; FLUSH PRIVILEGES; 5.普通用戶修改自身密碼 SET PASSWORD=PASSWORD('password'); 6.root用戶密碼丟失的解決辦法 # windows下 net stop MySQL mysql --skip-grant-tables mysql -u root > UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root' and Host='localhost'; > FLUSH PRIVILEGES; # 加載權限表 # Linux mysqld_safe --skip-grant-tables user=mysql 或者: /etc/init.d/mysql start-mysqld --skip-grant-tables > UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root' and Host='localhost'; > FLUSH PRIVILEGES; # 加載權限表 7.收回UPDATE權限 > REVOKE UPDATE ON *.* FROM 'username'@'localhost'; 8.查看權限 SHOW GRANTS FOR 'username'@'localhost';