mysql的几个权限管理的命令,很不常用,要用的时候往往都想不起来,在此记录一下以便自己查阅。
授权
增加权限
1
GRANT UPDATE ON database.table TO 'user'@'hostname';
所有数据库所有权限:
GRANT ALL ON *.* TO ‘user’@'localhost'
一个数据库增删改查权限:
GRANT SELECT, INSERT, UPDATE, DELETE ON testdb.* TO 'user''@'%'
查询权限
1
SHOW GRANTS FOR 'user'@'hostname'
查询自己的权限
SHOW GRANTS;
撤回权限
1
REVOKE ALL ON *.* FROM 'user'@'hostname';
revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可
刷新权限
1
FLUSH PRIVILEGES;
- 注意事项
- grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。
- 授权相关的命令执行后都需要刷新权限才会生效。
用户管理
添加用户
1
CREATE USER 'user'@'host' IDENTIFIED BY 'password';
修改密码
- mysql5.6及以下
~从MySQL 5.7.6开始不推荐使用PASSWORD()包裹密码, 并且将在以后的MySQL版本中删除
~但是mysql 5.6 必须使用PASSWORD()包裹密码
~mysql 5.6/5.7 都可以用下面语法更改密码
1
2
3
4
5
6# 更改自己的密码
SET PASSWORD = PASSWORD('password');
#更改指定用户的密码
SET PASSWORD FOR 'user'@'host' = PASSWORD('password');- mysql5.7及以上
~
SET PASSWORD
语法不被弃用,但是ALTER USER是帐户更改的首选语句~mysql 5.6不可用, 5.7可用
1
2
3
4
5# 更改自己的密码
ALTER USER USER() IDENTIFIED BY 'password';
# 更改指定用户的密码
ALTER USER 'user'@'host' IDENTIFIED BY 'password';删除用户
1
DROP USER 'user'@'%';
注意事项
- 帐户名的主机名部分(如果省略)默认为 ‘%’。
远程访问
授权
'user'@'%'
用户访问权限- 如果用户的’%’账户不存在会自动创建,
- 如果是新建的账户,默认没有密码无法登陆,需要设置密码
- 刷新权限
1
2
3
4
5
6# 授权远程用户
GRANT ALL ON *.* TO 'user'@'%'
# 完整的语句
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
- 修改
my.ini
中的bind-address
配置为0.0.0.0
,重启mysqld
生效