MySQL8用户/权限相关常用操作

1. 常用操作

 1 # 进入mysql数据库
 2 use mysql;
 3 
 4 # 创建用户,ip填'%'表示允许所有ip
 5 create user 'username'@'ip' IDENTIFIED by 'password';
 6 
 7 # 允许远程客户端通过密码访问
 8 alter user 'username'@'ip' IDENTIFIED WITH mysql_native_password by 'password';
 9 
10 # 直接创建能够通过远程客户端访问的账户
11 create user 'username'@'ip' IDENTIFIED WITH mysql_native_password by 'password';
12 
13 # 删除用户
14 drop user 'username'@'ip';
15 # 删除以后要刷新权限
16 FLUSH PRIVILEGES;
17 
18 # 修改用户
19 rename user 'username'@'ip' to 'new_username'@'new_ip';
20 
21 # 修改密码
22 set password for 'username'@'ip'='new_password';
23 
24 # 查看权限
25 show GRANTS;
26 # 查看指定用户权限
27 show GRANTS for 'username'@'ip';
28 
29 # 授予部分权限,db和table填*表示所有
30 grant SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, INDEX, CREATE VIEW, SHOW VIEW, CREATE TEMPORARY TABLES on dbname.tablename to 'username'@'ip';
31 
32 # 授予所有权限,
33 grant ALL PRIVILEGES on dbname.tablename to 'username'@'ip';
34 
35 # 撤销授权
36 revoke all on *.* from 'username'@'ip';
37 
38 # 可以搭配"用户-角色-权限"使用,这个交给DBA处理吧=_=

2. 常见问题

  a. 创建用户时报错 [Err] 1396 - Operation CREATE USER failed for 'username'@'ip' 解决方法

    可能原因:

      1. 用户已存在;

      2. 使用delete语句删除用户后没有刷新权限;

      3. 用户不存在,但是存在该用户的权限信息。

    解决步骤:

      1. 创建过用户,查询后发现无此用户:

        执行 FLUSH PRIVILEGES; 语句后,重新执行创建语句

      2. 如果还是报错:

        执行 drop user 'username'@'ip';

        然后执行 FLUSH PRIVILEGES;

        然后再执行创建语句

参考文章:

  -- 创建&授权

  https://www.cnblogs.com/zhaohaiyu/p/11459613.html mysql创建用户和权限管理

  -- 撤销权限

  https://www.cnblogs.com/qlqwjy/p/8022575.html MySql授权和撤销权限操作

  -- 删除用户

  https://blog.csdn.net/asty9000/article/details/80945631 mysql创建用户报错[Err] 1396 - Operation CREATE USER failed for 'test'@'%'的解决方法

  -- 权限说明

  https://www.cnblogs.com/yingsong/p/9718426.html 【转载整理】mysql权限分配详解

  https://www.jb51.net/article/31850.htm MySQL创建用户与授权方法

原文地址:https://www.cnblogs.com/tarencez/p/12390499.html