MySQL 用户权限管理:授权、撤销、暗码更新和用户删除(图文解析) ...

打印 上一主题 下一主题

主题 1893|帖子 1893|积分 5679

前言

公司内部的数据库权限一般针对差别人员有差别的权限分配,而不都统一给一个root权限
1. 授予权限

授予用户权限的根本下令是GRANT
可以授予的权限种类许多,涵盖从数据库和表级别到列和存储过程级别的各种使用
根本的语法如下:
  1. GRANT privileges ON database.table TO 'username'@'host';
复制代码
对应的参数如下:


  • privileges:要授予的权限列表,可以是一个或多个权限,用逗号分隔
  • database:数据库名
  • table:表名,可以使用通配符*表示全部数据库或全部表
  • 'username'@'host':用户及其允许连接的主机
常见的权限如下:
权限类型说明ALL PRIVILEGES授予用户全部权限SELECT允许用户执行SELECT查询INSERT允许用户插入数据UPDATE允许用户更新数据DELETE允许用户删除数据CREATE允许用户创建新数据库或表DROP允许用户删除数据库或表GRANT OPTION允许用户将自己拥有的权限授予其他用户RELOAD允许用户执行FLUSH使用(刷新表、日志等)SHUTDOWN允许用户关闭MySQL服务器PROCESS允许用户查看当前MySQL服务器的线程信息FILE允许用户读写服务器上的文件REFERENCES允许用户创建外键INDEX允许用户创建和删除索引ALTER允许用户修改表结构SHOW DATABASES允许用户执行SHOW DATABASES查看全部数据库SUPER允许用户执行超级用户使用(如设置全局变量、制止复制等)CREATE TEMPORARY TABLES允许用户创建临时表LOCK TABLES允许用户使用LOCK TABLES下令EXECUTE允许用户执行存储过程REPLICATION SLAVE允许用户作为复制从服务器连接REPLICATION CLIENT允许用户查询主从复制服务器信息CREATE VIEW允许用户创建视图SHOW VIEW允许用户执行SHOW CREATE VIEW查看视图定义CREATE ROUTINE允许用户创建存储过程和函数ALTER ROUTINE允许用户修改和删除存储过程和函数EVENT允许用户创建、修改和删除变乱TRIGGER允许用户创建和删除触发器CREATE USER允许用户创建、删除和修改用户帐号ALTER USER允许用户修改已有效户的属性(如暗码) 类似如下:
  1. # 授予多种权限:
  2. # 授予user1对mydatabase数据库中所有表的SELECT、INSERT和UPDATE权限:
  3. GRANT SELECT, INSERT, UPDATE ON mydatabase.* TO 'user1'@'localhost';
  4. # 授予所有权限:
  5. # 授予user1对mydatabase数据库中所有表的所有权限:
  6. GRANT ALL PRIVILEGES ON mydatabase.* TO 'user1'@'localhost';
  7. # 授予全局权限:
  8. # 授予user1全局CREATE和DROP权限:
  9. GRANT CREATE, DROP ON *.* TO 'user1'@'localhost'
复制代码
2. 撤销权限

撤销特定的权限或收回用户全部权限
根本的语法如下:
  1. REVOKE privileges ON database.table FROM 'username'@'host';
复制代码


  • privileges:要收回的权限列表,可以是一个或多个权限,用逗号分隔
  • database:数据库名
  • table:表名,可以使用通配符*表示全部数据库或全部表
  • 'username'@'host':用户及其允许连接的主机
收回特定的权限:REVOKE SELECT, INSERT ON mydatabase.* FROM 'user1'@'localhost';
收回全部的权限:REVOKE SELECT, INSERT, UPDATE, DELETE ON mydatabase.* FROM 'user1'@'localhost';
3. 查询权限

查询当前用户的权限:show grants;
查询特定用户的权限:SHOW GRANTS FOR 'root'@'localhost';
截图如下所示:

查看MySQL中名为root的用户的详细信息和权限配置
mysql.user表包含全部MySQL用户的详细信息,包括用户名、主机、权限以及其他安全相关设置
  1. SELECT * FROM mysql.user WHERE user='root';
复制代码
如图所示:

对于该表的根本含义如下:
属性形貌Host从哪些主机连接到MySQL服务器,例如localhost、%(表示任意主机)等User用户名Password加密后的用户暗码(从MySQL 5.7.6版本开始,改为authentication_string)Select_priv、Insert_priv、Update_priv、Delete_priv 等这些列存储用户在全局级别上的权限,值为'Y'(有权限)或'N'(无权限)Create_priv、Drop_priv是否有创建和删除数据库、表等的权限Grant_priv是否有授予权限的能力References_priv、Index_priv、Alter_priv其他特定使用权限Create_user_priv是否有创建新用户的权限ssl_type、ssl_cipher、x509_issuer、x509_subject与SSL/TLS连接相关的信息max_questions、max_updates、max_connections、max_user_connections限制用户在一定时间内的最大查询数、更新数、连接数等 4. Demo

结合Demo深入理解
  1. -- 1. 创建用户
  2. CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password123';
  3. -- 2. 授予用户对mydatabase数据库所有表的所有权限
  4. GRANT ALL PRIVILEGES ON mydatabase.* TO 'user1'@'localhost';
  5. -- 3. 查看用户权限
  6. SHOW GRANTS FOR 'user1'@'localhost';
  7. -- 4. 收回用户对mydatabase数据库所有表的SELECT和INSERT权限
  8. REVOKE SELECT, INSERT ON mydatabase.* FROM 'user1'@'localhost';
  9. -- 5. 查看用户权限(确认SELECT和INSERT权限已收回)
  10. SHOW GRANTS FOR 'user1'@'localhost';
复制代码
查看用户权限:

再次查看用户权限:


对于用户的根本使用
先科普根本的用户创建还有删除下令:


  • 创建用户:CREATE USER 'username'@'host' IDENTIFIED BY 'password';
  • 删除用户:`DROP USER ‘username’@‘host’;
如果更新用户的暗码,推荐阅读:修改sql暗码(涵盖多个版本)
  1. -- 1. 创建用户
  2. CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password123';
  3. -- 2. 更新用户密码(方法1:使用 ALTER USER)
  4. ALTER USER 'user1'@'localhost' IDENTIFIED BY 'new_password123';
  5. -- 3. 更新用户密码(方法2:使用 SET PASSWORD)
  6. SET PASSWORD FOR 'user1'@'localhost' = PASSWORD('new_password123');
  7. -- 4. 删除用户
  8. DROP USER 'user1'@'localhost';
复制代码
截图如下:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

怀念夏天

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表