MySQL - create user & grant

进入到 mysql 数据库下

mysql> use mysql
Database changed

对用户增删改

MySQL5.7 mysql.user 表没有 password 字段 改 authentication_string

创建新用户

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
  • username, 创建的用户名
  • host, 指定该用户在哪个主机上可以登陆,如果是本地用户可用 localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符 %
  • password, 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

指定 IP: 192.118.1.1 的 nacos 用户登录

create user 'nacos'@'192.118.1.1' identified by 'password';

指定 IP: 192.118.1.开头的 nacos 用户登录

create user 'nacos'@'192.118.1.%' identified by 'password';

指定任何 IP 的 nacos 用户登录

create user 'nacos'@'%' identified by 'password';

删除用户

drop user '用户名'@'IP地址';

修改用户

rename user '用户名'@'IP地址' to '新用户名'@'IP地址';

修改密码

SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

如果是当前登陆用户用:

SET PASSWORD = PASSWORD("newpassword");

授权

GRANT privileges ON databasename.tablename TO 'username'@'host'

  • privileges, 用户的操作权限,如 SELECT,INSERT,UPDATE 等,如果要授予所有权限则使用 ALL
  • databasename, 数据库名
  • tablename, 表名,如果要授予该用户对所有数据库和表的相应操作权限则可用 * 表示,如 *.*

查看权限

show grants for '用户'@'IP地址';

授权 nacos 用户仅对 db1.t1 文件有查询、插入和更新的操作

grant select,insert,update on db1.t1 to "nacos"@'%';

表示有所有的权限,除了 grant 这个命令,这个命令是 root 才有的。 nacos 用户对 db1 下的 t1 文件有任意操作

grant all privileges  on db1.t1 to "nacos"@'%';

nacos 用户对 db1 数据库中的文件执行任何操作

grant all privileges  on db1.* to "nacos"@'%';

nacos 用户对所有数据库中文件有任何操作

grant all privileges  on *.*  to "nacos"@'%';

注意:

  • 用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

#取消权限

REVOKE privilege ON databasename.tablename FROM 'username'@'host';

说明

  • privilege, databasename, tablename 同授权部分

取消 nacos 用户对 db1 的 t1 文件的任意操作

revoke all on db1.t1 from 'nacos'@"%";  

取消来自远程服务器的 mjj 用户对数据库 db1 的所有表的所有权限

revoke all on db1.* from 'nacos'@"%";  

取消来自远程服务器的 nacos 用户所有数据库的所有的表的权限

revoke all privileges on *.* from 'nacos'@'%';

注意:

  • 假如你在给用户 'apple'@'%' 授权的时候是这样的( 或类似的 )GRANT SELECT ON test.user TO 'apple'@'%',则在使用 REVOKE SELECT ON *.* FROM 'apple'@'%'; 命令并不能撤销该用户对 test 数据库中 user 表的 SELECT 操作。
  • 相反,如果授权使用的是 GRANT SELECT ON *.* TO 'pig'@'%';REVOKE SELECT ON test.user FROM 'apple'@'%'; 命令也不能撤销该用户对 test 数据库中 user 表的 select 权限。
  • 具体信息可以用命令SHOW GRANTS FOR 'apple'@'%'; 查看。
上一篇:shell cleanup history 下一篇:MySQL - mysqldump