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生效