加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

了解 MySQL 的用户管理和权限控制机制

发布时间:2023-10-14 13:37:03 所属栏目:MySql教程 来源:
导读:这篇文章主要为大家展示了“MySQL如何实现用户管理与权限管理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL如何实现用户管理与权限管理&rdqu

这篇文章主要为大家展示了“MySQL如何实现用户管理与权限管理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL如何实现用户管理与权限管理”这篇文章吧。

-- 操作环境

mysql> show variables like 'version'; 

+---------------+--------+

| Variable_name | Value |

+---------------+--------+

| version   | 5.6.25 |

+---------------+--------+

1 row in set (0.04 sec)

背景知识补充:

user 表中 host 列的值的意义

%      匹配所有主机

localhost  localhost 不会被解析成 IP 地址,直接通过 UNIXsocket 连接

127.0.0.1  会通过 TCP/IP 协议连接,并且只能在本机访问;

::1 ::1   就是兼容支持 ipv6 的,表示同 ipv4 的 127.0.0.1

一: 用户管理

1. 查看用户

mysql> select host,user,password from mysql.user where user like 'andy'; 

2. 创建数据库用户

--指定密码创建新用户,%表示任意,即 andy02 可以从任意主机访问数据库 

mysql> create user 'andy02'@'%' identified by 'oracle'; 

Query OK, 0 rows affected (0.03 sec)

3. 用户改密码

mysql> set password for andy02=password('mysql');

mysql> flush privileges;

4.删除用户

--查看当前系统中已存在的用户 

mysql> select user,host,Password from mysql.user; 

--使用drop user命令删除用户 

mysql> drop user 'andy02'@'%';  注意:如果不指定 @'%' ,默认缺省,则删除的是 '%' 。

mysql> select user,host,Password from mysql.user where user like 'andy%'; 

Empty set (0.00 sec) 

5. 重命名帐户

--rename user命令 

mysql> rename user 'andy02'@'%' to 'andy01'@'%'; 

Query OK, 0 rows affected (0.00 sec)

--检查 

mysql> select user,host,Password from mysql.user where user like 'andy%'; 

二:权限管理

注意:mysql的权限相对于oracle而言,相对简单,而且也没有涉及到角色方面的定义与配置 

--grant命令语法 

1. 权限种类 

(这里直接查看,root账户所有的权限)

mysql> select * from mysql.user where user='root' and host='%'\G;

*************************** 1. row ***************************

         Host: %

         User: root

       Password: *2447D497B9A6A15F2776055CB2D1E9F86758182F

      Select_priv: Y

      Insert_priv: Y

      Update_priv: Y

      Delete_priv: Y

      Create_priv: Y

       Drop_priv: Y

      Reload_priv: Y

     Shutdown_priv: Y

     Process_priv: Y

       File_priv: Y

      Grant_priv: Y

    References_priv: Y

      Index_priv: Y

      Alter_priv: Y

     Show_db_priv: Y

      Super_priv: Y

 Create_tmp_table_priv: Y

   Lock_tables_priv: Y

     Execute_priv: Y

    Repl_slave_priv: Y

   Repl_client_priv: Y

   Create_view_priv: Y

    Show_view_priv: Y

  Create_routine_priv: Y

  Alter_routine_priv: Y

   Create_user_priv: Y

      Event_priv: Y

     Trigger_priv: Y

Create_tablespace_priv: Y

       ssl_type: 

      ssl_cipher: 

      x509_issuer: 

     x509_subject: 

     max_questions: 0

      max_updates: 0

    max_connections: 0

 max_user_connections: 0

        plugin: mysql_native_password

 authentication_string: 

   password_expired: N

1 row in set (0.00 sec)

2. 权限存放

MySQL 服务器通过 MySQL 权限表来控制用户对数据库的访问,MySQL 权限表存放在 mysql 数据库里,由 mysql_install_db 脚本初

始化。这些 MySQL 权限表分别 user,db,table_priv,columns_priv 和 host。

user 权限表:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。

db 权限表:记录各个帐号在各个数据库上的操作权限。

table_priv 权限表:记录数据表级的操作权限。

columns_priv 权限表:记录数据列级的操作权限。

host 权限表:配合 db 权限表对给定主机上数据库级操作权限作更细致的控制。这个权限表不受 GRANT 和 REVOKE 语句的影响。

3. 权限范围 priv_level: 

  *

 | *.*

 | db_name.*

 | db_name.tbl_name

 | tbl_name

 | db_name.routine_name

4. 授权

mysql>grant all privileges on *.* to 'andy01'@'%';  (--WITH GRANT OPTION 是否传递,默认为不传递)

mysql>flush privileges; 

5. 查看当前用户的权限

mysql> show grants;

6. 查看指定用户的权限

mysql> show grants for 'andy01'@'%'; 

-- revoke 收回权限

以上是“MySQL如何实现用户管理与权限管理”这篇文章的所有内容,感谢各位的阅读!

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章