# 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';