• Mysql用户管理-授权


    目录

    知识点1:建立用户

    语法形式:

    复合主键

    知识点2:修改用户密码:

    使用   alter user   语句来修改用户密码

    知识点3:如何查看Mysql的版本?

    1、可以在登陆Mysq的时候看到版本号

    2、使用select version()语句

    3、使用show variables like "version"语句

    知识点4:如何查看当前登陆用户?

    知识点5:如何查看当前使用的数据库?

    如何查看当前有哪些用户登录到了mysql里面?

    知识点6:删除用户

    知识点7:Mysql默认4个数据库

    information_schema 信息库:数据字典库

     performance_schema 性能架构库

     sys:Mysql系统

    mysql:

     知识点8:grant权限


    知识点1:建立用户

    语法形式:

    1. root@sanchuang 10:32 mysql>help create user
    2. Name: 'CREATE USER'
    3. Description:
    4. Syntax:
    5. CREATE USER [IF NOT EXISTS]
    6. user [auth_option] [, user [auth_option]] ...
    7. [REQUIRE {NONE | tls_option [[AND] tls_option] ...}]
    8. [WITH resource_option [resource_option] ...]
    9. [password_option | lock_option] ...

    示例:新建一个用户liuhongjie

    1. root@sanchuang 10:48 mysql>create user 'liuhongjie'@'192.168.0.123' identified by 'liu123456';
    2. Query OK, 0 rows affected (0.01 sec)

    'liuhongjie'   表示新建用户名

    '192.168.0.123'  表示允许用户从这台主机连接过来

    identified by  设置用户密码

     新建一个用户,他的用户名和密码会放到哪里?

    1. root@sanchuang 10:52 mysql>desc mysql.user;
    2. +------------------------+-----------------------------------+------+-----+-----------------------+-------+
    3. | Field | Type | Null | Key | Default | Extra |
    4. +------------------------+-----------------------------------+------+-----+-----------------------+-------+
    5. | Host | char(60) | NO | PRI | | |
    6. | User | char(32) | NO | PRI | | |
    7. | Select_priv | enum('N','Y') | NO | | N | |
    8. | Insert_priv | enum('N','Y') | NO | | N | |
    9. | Update_priv | enum('N','Y') | NO | | N | |
    10. | Delete_priv | enum('N','Y') | NO | | N | |
    11. | Create_priv | enum('N','Y') | NO | | N | |
    12. | Drop_priv | enum('N','Y') | NO | | N | |
    13. | Reload_priv | enum('N','Y') | NO | | N | |
    14. | Shutdown_priv | enum('N','Y') | NO | | N | |
    15. | Process_priv | enum('N','Y') | NO | | N | |
    16. | File_priv | enum('N','Y') | NO | | N | |
    17. | Grant_priv | enum('N','Y') | NO | | N | |
    18. | References_priv | enum('N','Y') | NO | | N | |
    19. | Index_priv | enum('N','Y') | NO | | N | |
    20. | Alter_priv | enum('N','Y') | NO | | N | |
    21. | Show_db_priv | enum('N','Y') | NO | | N | |
    22. | Super_priv | enum('N','Y') | NO | | N | |
    23. | Create_tmp_table_priv | enum('N','Y') | NO | | N | |
    24. | Lock_tables_priv | enum('N','Y') | NO | | N | |
    25. | Execute_priv | enum('N','Y') | NO | | N | |
    26. | Repl_slave_priv | enum('N','Y') | NO | | N | |
    27. | Repl_client_priv | enum('N','Y') | NO | | N | |
    28. | Create_view_priv | enum('N','Y') | NO | | N | |
    29. | Show_view_priv | enum('N','Y') | NO | | N | |
    30. | Create_routine_priv | enum('N','Y') | NO | | N | |
    31. | Alter_routine_priv | enum('N','Y') | NO | | N | |
    32. | Create_user_priv | enum('N','Y') | NO | | N | |
    33. | Event_priv | enum('N','Y') | NO | | N | |
    34. | Trigger_priv | enum('N','Y') | NO | | N | |
    35. | Create_tablespace_priv | enum('N','Y') | NO | | N | |
    36. | ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
    37. | ssl_cipher | blob | NO | | NULL | |
    38. | x509_issuer | blob | NO | | NULL | |
    39. | x509_subject | blob | NO | | NULL | |
    40. | max_questions | int(11) unsigned | NO | | 0 | |
    41. | max_updates | int(11) unsigned | NO | | 0 | |
    42. | max_connections | int(11) unsigned | NO | | 0 | |
    43. | max_user_connections | int(11) unsigned | NO | | 0 | |
    44. | plugin | char(64) | NO | | mysql_native_password | |
    45. | authentication_string | text | YES | | NULL | |
    46. | password_expired | enum('N','Y') | NO | | N | |
    47. | password_last_changed | timestamp | YES | | NULL | |
    48. | password_lifetime | smallint(5) unsigned | YES | | NULL | |
    49. | account_locked | enum('N','Y') | NO | | N | |
    50. +------------------------+-----------------------------------+------+-----+-----------------------+-------+
    51. 45 rows in set (0.01 sec)

    当我们新建用户的时候,create语句会别转成一条insert语句插入mysql数据库的user表里面

    用户名会插入 User字段里面

    主机名会插入Host字段里面

    密码会插入 authentication_string字段里面

    复合主键

    可以看到User表里面的Host字段和User字段都是主键,也就是说名字和主机名都必须唯一,且不能为空

    示例:如果我们再创建一个同名同主机名的用户就会报错

    1. root@sanchuang 10:54 mysql>create user 'liuhongjie'@'192.168.0.123' identified by '123546'
    2. -> ;
    3. ERROR 1396 (HY000): Operation CREATE USER failed for 'liuhongjie'@'192.168.0.123'

    但是主机名和刚才建立的liuhongjie用户不一样就可以新建成功

    1. root@sanchuang 11:02 mysql>create user 'liuhongjie'@'192.168.0.124' identified by 'liu123456';
    2. Query OK, 0 rows affected (0.00 sec)

    查看user表里面刚才新建的字段

    1. root@sanchuang 11:07 mysql>select user,host,authentication_string from mysql.user;
    2. +---------------+---------------+-------------------------------------------+
    3. | user | host | authentication_string |
    4. +---------------+---------------+-------------------------------------------+
    5. | root | localhost | *4ABA759CFB5DDBF29AFAFBFB03026091F6F694FD |
    6. | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    7. | mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    8. | liming | % | *FFA025B9023C96F7DCB1078E0F171682708C9153 |
    9. | liuhongjie | 192.168.0.123 | *0BA8D66F9147D667B15E8D10BDEB997E7E15C494 |
    10. | liuhongjie | 192.168.0.124 | *0BA8D66F9147D667B15E8D10BDEB997E7E15C494 |
    11. +---------------+---------------+-------------------------------------------+
    12. 6 rows in set (0.00 sec)

    ####################################################### 

    知识点2:修改用户密码:

    使用   alter user   语句来修改用户密码

    语法格式:

    1. Syntax:
    2. ALTER USER [IF EXISTS]
    3. user [auth_option] [, user [auth_option]] ...
    4. [REQUIRE {NONE | tls_option [[AND] tls_option] ...}]
    5. [WITH resource_option [resource_option] ...]
    6. [password_option | lock_option] ...
    7. ALTER USER [IF EXISTS]
    8. USER() IDENTIFIED BY 'auth_string'
    1. root@sanchuang 11:07 mysql>alter user 'liuhongjie'@'192.168.0.123' identified by '123';
    2. Query OK, 0 rows affected (0.00 sec)

    #######################################################  

    知识点3:如何查看Mysql的版本?

    1、可以在登陆Mysq的时候看到版本号

    1. [root@localhost ~]# mysql -u root -p
    2. Enter password:
    3. Welcome to the MySQL monitor. Commands end with ; or \g.
    4. Your MySQL connection id is 7
    5. Server version: 5.7.34 MySQL Community Server (GPL)

    2、使用select version()语句

    1. root@sanchuang 11:13 mysql>select version();
    2. +-----------+
    3. | version() |
    4. +-----------+
    5. | 5.7.34 |
    6. +-----------+
    7. 1 row in set (0.00 sec)

    3、使用show variables like "version"语句

    1. root@sanchuang 11:17 mysql>show variables like "version";
    2. +---------------+--------+
    3. | Variable_name | Value |
    4. +---------------+--------+
    5. | version | 5.7.34 |
    6. +---------------+--------+
    7. 1 row in set (0.01 sec)

    #######################################################  

    知识点4:如何查看当前登陆用户?

    1. root@sanchuang 11:19 mysql>select user();
    2. +----------------+
    3. | user() |
    4. +----------------+
    5. | root@localhost |
    6. +----------------+
    7. 1 row in set (0.00 sec)

    #######################################################  

    知识点5:如何查看当前使用的数据库?

    1. root@sanchuang 11:21 mysql>select database();
    2. +------------+
    3. | database() |
    4. +------------+
    5. | sanchuang |
    6. +------------+
    7. 1 row in set (0.00 sec)

    如何查看当前有哪些用户登录到了mysql里面?

    1. root@mysql 16:40 mysql>show processlist;
    2. +----+--------+-----------+-------+---------+------+----------+------------------+
    3. | Id | User | Host | db | Command | Time | State | Info |
    4. +----+--------+-----------+-------+---------+------+----------+------------------+
    5. | 14 | root | localhost | mysql | Query | 0 | starting | show processlist |
    6. | 23 | wangsh | localhost | NULL | Sleep | 14 | | NULL |
    7. +----+--------+-----------+-------+---------+------+----------+------------------+
    8. 2 rows in set (0.00 sec)
    9. root@mysql 17:06 mysql>

    #######################################################  

    知识点6:删除用户

    示例:删除用户  liuhongjie@192.168.0.123

    1. root@sanchuang 11:21 mysql>drop user 'liuhongjie'@'192.168.0.123';
    2. Query OK, 0 rows affected (0.00 sec)
    3. root@sanchuang 11:34 mysql>select host,user from mysql.user;
    4. +---------------+---------------+
    5. | host | user |
    6. +---------------+---------------+
    7. | % | liming |
    8. | 192.168.0.124 | liuhongjie |
    9. | localhost | mysql.session |
    10. | localhost | mysql.sys |
    11. | localhost | root |
    12. +---------------+---------------+
    13. 5 rows in set (0.00 sec)
    14. root@sanchuang 11:34 mysql>

    #######################################################  

    知识点7:Mysql默认4个数据库

    1. root@sanchuang 11:34 mysql>show databases;
    2. +--------------------+
    3. | Database |
    4. +--------------------+
    5. | information_schema |
    6. | mysql |
    7. | performance_schema |
    8. | sys |
    9. +--------------------+

    information_schema 信息库:数据字典库

            information_schema是一个信息数据库,它保存着关于Mysql服务器所维护的所有其他数据库的信息(如数据库名,数据库表,表栏的数据类型与访问权限等)

            数据字典 --》元数据:描述其他数据的数据

    1. # 查看字符集
    2. root@sanchuang 11:51 mysql>show character set;

     performance_schema 性能架构库

            主要用于收集数据库服务器性能参数        

            执行某些操作会有性能相关的参数

     sys:Mysql系统

            sys库所有的数据源自performance_schema目标是把performance_schema的复杂度降低,让DBA更好的阅读这个库里面的内容,让DBA更快的了解DB的运行情况

    mysql:

            存放的是Mysql程序相关的表:登录用户表,时间相关表,db,权限表,mysql的核心数据库,类似于sql server中的master表,主要负责存储数据库的用户,权限设置,关键字等mysql自己需要使用的控制和管理信息。

    #######################################################  

     知识点8:grant权限

    语法格式:

    1. Syntax:
    2. GRANT
    3. priv_type [(column_list)]
    4. [, priv_type [(column_list)]] ...
    5. ON [object_type] priv_level
    6. TO user [auth_option] [, user [auth_option]] ...
    7. [REQUIRE {NONE | tls_option [[AND] tls_option] ...}]
    8. [WITH {GRANT OPTION | resource_option} ...]
    9. GRANT PROXY ON user
    10. TO user [, user] ...
    11. [WITH GRANT OPTION]

    示例:新建一个用户wangsh % 表示可以从任何机器连接过来

    1. root@sanchuang 11:54 mysql>create user 'wangsh'@'%' identified by '123456';
    2. Query OK, 0 rows affected (0.00 sec)

    可以看到,普通用户只有一个默认数据库

    1. wangsh@(none) 11:56 mysql>show databases;
    2. +--------------------+
    3. | Database |
    4. +--------------------+
    5. | information_schema |
    6. +--------------------+
    7. 1 row in set (0.00 sec)

    使用root用户给wangsh用户授权

    1. root@sanchuang 11:59 mysql>grant select,insert on student.* to 'wangsh'@'%';
    2. Query OK, 0 rows affected (0.00 sec)

     select,insert表示给用户查询和插入语句的权利

    on student.* 表示在student的所有表里面

     可以看到,给wangsh用户授权对student数据库的所有表有查询,插入的权限后,wangsh用户就有student这个数据库了。

    1. wangsh@(none) 11:56 mysql>show databases;
    2. +--------------------+
    3. | Database |
    4. +--------------------+
    5. | information_schema |
    6. | student |
    7. +--------------------+
    8. 2 rows in set (0.00 sec)
    9. wangsh@(none) 12:02 mysql>

  • 相关阅读:
    CVE-2024-27199 JetBrains TeamCity 身份验证绕过漏洞2
    ef core code first pgsql
    docker desktop 点击setting 一直转圈圈
    Docker部署前后端服务示例
    瑞吉外卖03-新增员工
    安卓手机如何无线连接adb?
    【Redis】缓存击穿的产生情况&解决方案
    Java程序设计——类加载(Java高级应用)
    ES6 | Symbol以及迭代器
    信息安全实验——口令破解技术
  • 原文地址:https://blog.csdn.net/qq_48391148/article/details/126280908