mysql权限管理

用户授权

mysql> grant all privileges on *.* to 'dot2'@'%' identified by '123456';
  • all privileges:表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。

  • on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user

  • to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:”yangxin”@”192.168.0.%”,表示dot2 这个用户只能在192.168.0.*IP段登录

  • identified by:指定用户的登录密码

可以使用GRANT给用户添加权限,权限会自动叠加,不会覆盖之前授予的权限,比如你先给用户添加一个SELECT权限,后来又给用户添加了一个INSERT权限,那么该用户就同时拥有了SELECT和INSERT权限。

刷新权限

mysql> flush privileges;

查看用户权限

mysql> SHOW GRANTS FOR 'root'@'localhost';

注意 @ 后面的主机名也很重要

回收权限

mysql> revoke create on *.* from 'dot2'@'localhost';
mysql> flush privileges;

可能需要重新连接数据库,权限才生效。

删除用户

mysql> select host,user from user;
mysql> drop user 'dot2'@'localhost';

用户重命名

mysql> rename user 'dot2'@'%' to 'dot2com'@'%';

修改密码

mysql> ALTER USER 'dot2'@'localhost'IDENTIFIED BY '新密码';