3.直接修改数据库:
mysql> UPDATE user SET Password=PASSWORD('PASSWORD') WHERE USER='USERNAME' AND HOST='HOST';
mysql>FLUSH PRIVILEGES;
重命名用户:
RENAME USER OLDUSER TO NEWUSER
用户权限:
指定用户权限:
若用户不存在则自动创建并授权。
GRANT PRI1,PRI2,... ON [OBJECT_TYPE] PRIV_LEVEL TO 'USERNMAE'@'HOST' [IDENTIFIED BY 'PASSWORD'] [REQUIRE] [WITH WITH_OPTION];
PRI:
ALL PRIVILEGES 所有的权限
OBJECT_TYPE: 对象类型
TABLE
FUNCTION 函数
PROCEDURE 存储过程或存储函数
WITH_OPTION:资源使用限定,NUM为0表示不做限定。
GRANT_OPTION 允许该用户将获得的权限授权给其他用户
MAX_QUERIES_PER_HOUR NUM 每小时最大查询个数为NUM个
MAX_UPDATES_PER_HOUR NUM 每小时允许使用NUM次UPDATE
MAX_CONNECTIONS_PER_HOUR NUM每小时发起NUM个连接请求
MAX_USER_CONNECTIONS NUM 每小时某个账户连接次数为NUM个
取消用户权限:
REVOKE PRT1,PRI2,... ON [OBJECT_TYPE] PRIV_LEVEL FROM 'USERNAME'@'HOST';
查看用户权限:
SHOW GRANTS FOR 'USERNAME'@'HOST';
刷新授权:
FLUSH PRIVILEGES;
实例:
1.创建用户test并设定密码为testpwd:
mysql>CREATE USER 'test'@'%' IDENTIFIED BY 'testpwd';
或
mysql>GRANT ...
或
mysql>INSERT INTO mysql.user ;
mysql>FLUSH PRIVILEGES;
注意:若信创建用户无法登陆,请删除匿名用户。正常情况下在初始化后就应该做。
mysql>USE mysql;
mysql>DELETE FROM user WHERE user='';
mysql>FLUSH PRIVILEGES;
2.使用GRANT命令创建账户test和重设密码为testpwd:
mysql>CRANT CREATE ON test.* TO 'test'@'%' IDENTIFIED BY ‘testpwd’;
3.给test用户授权CREATE权限并查看:
mysql>GRANT CREATE ON test.* TO 'test'@'%';
mysql>FLUSH PRIVILEGES;
mysql>SHOW GRANTS FOR 'test'@'%';
mysql>\q
注意:在设定权限并刷新后,重新登陆即可生效。
4.字段权限的授权:
mysql>USE test
mysql>GRANT UPDATE(Age) ON testdb TO 'test'@'%';
mysql>UPDATE testdb SET Age=40 WHERE ID=1;
5.SUPER权限的应用:
mysql>GRANT SUPER ON *.* TO 'test'@'%';
SUPER权限比较特殊,可以执行SHUTDOWN,修改全局变量等。
6.取消test在testdb数据库中的SELECT权限:
mysql>REVOKE SELECT ON testdb.* FROM 'test'@'%'