• MySQL用户管理与授权


    目录

    一、管理用户

    Ⅰ、新建用户

    Ⅱ、删除用户

    Ⅲ、用户的重命名

    Ⅳ、修改密码

    Ⅴ、忘记root密码(8.0以下版本)

    二、授权控制

    Ⅰ、授予权限

    Ⅱ、查看权限

    Ⅲ、撤销权限


    一、管理用户

    Ⅰ、新建用户

    登录mysql,创建用户的SQL

    1. MySQL>create user 'username'@'localhost' identified by password 'password';
    2. #'创建的用户名'@'创建的用户可以在哪些主机上登录(可使用IP地址、网段、主机名)'

    创建用户时,可以选择使用或不使用[password]关键字,下面是使用PASSWORD关键字,使用密文作为密码

    1. MySQL [(none)]> select password('root');
    2. +-------------------------------------------+
    3. | password('root') |
    4. +-------------------------------------------+
    5. | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
    6. +-------------------------------------------+
    7. 1 row in set, 1 warning (0.00 sec)
    8. MySQL [(none)]> create user 'ljp'@'%' identified by
    9. password'*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B';

    创建后的用户是保存在mysql数据库表里,使用查询语句查看用户

    1. MySQL [(none)]> use mysql;
    2. Database changed
    3. MySQL [mysql]> select user, authentication_string,host from user;
    4. +---------------+-------------------------------------------+-----------+
    5. | user | authentication_string | host |
    6. +---------------+-------------------------------------------+-----------+
    7. | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | % |
    8. | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
    9. | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
    10. | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | 127.0.0.1 |
    11. | ljp | *C7FCE122423528D127FC47C9B711A5B16CB07158 | localhost |
    12. +---------------+-------------------------------------------+-----------+
    13. 5 rows in set (0.00 sec)

    使用新用户登录

    1. [root@test111 opt]# mysql -uljp -p
    2. Enter password:
    3. Welcome to the MySQL monitor. Commands end with ; or \g.
    4. Your MySQL connection id is 3
    5. Server version: 5.7.38-log Source distribution
    6. Copyright (c) 2000, 2022, Oracle and/or its affiliates.
    7. Oracle is a registered trademark of Oracle Corporation and/or its
    8. affiliates. Other names may be trademarks of their respective
    9. owners.
    10. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    Ⅱ、删除用户

    删除用户命令使用语句

    drop 'username'@'host';

    删除之前创建的ljp用户

    1. MySQL [(none)]> drop user 'ljp'@'localhost';
    2. Query OK, 0 rows affected (0.00 sec)
    3. MySQL [(none)]> use mysql;
    4. Database changed
    5. MySQL [mysql]> select user,authentication_string,host from user;
    6. +---------------+-------------------------------------------+-----------+
    7. | user | authentication_string | host |
    8. +---------------+-------------------------------------------+-----------+
    9. | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | % |
    10. | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
    11. | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
    12. | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | 127.0.0.1 |
    13. +---------------+-------------------------------------------+-----------+
    14. 4 rows in set (0.00 sec)

    也可以使用delete语句进行删除,但和drop有区别,drop会把用户和相关权限都删除,而delete只会删除用户,权限依然存在。

    Ⅲ、用户的重命名

    用户重命名使用如下SQL语句

    MySQL [mysql]> rename user 'old name'@'host' to 'new name'@'host';
    

    例:

    1. MySQL [mysql]> rename user 'ljp'@'localhost' to 'paul'@'localhost';
    2. Query OK, 0 rows affected (0.00 sec)
    3. MySQL [mysql]> select user,host,authentication_string from user;
    4. +---------------+-----------+-------------------------------------------+
    5. | user | host | authentication_string |
    6. +---------------+-----------+-------------------------------------------+
    7. | root | % | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
    8. | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    9. | mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    10. | root | 127.0.0.1 | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
    11. | paul | localhost | *C7FCE122423528D127FC47C9B711A5B16CB07158 |
    12. +---------------+-----------+-------------------------------------------+
    13. 5 rows in set (0.00 sec)

    Ⅳ、修改密码

    修改用户的密码可以使用以下SQL语句

    1. #给目前登录的用户修改密码
    2. set password = password('password');
    3. #给其他用户的用户修改密码
    4. set password for 'user'@'host' = password('password');

     例:

    MySQL [mysql]> set password =password('222333');
    MySQL [mysql]> set password for 'paul'@'localhost' = password('241567');

    Ⅴ、忘记root密码(8.0以下版本)

    进入配置文件修改

    1. vim /etc/my.cnf
    2. #在[mysqld]下面增加一句
    3. ......省略部分内容
    4. [mysqld]
    5. skip-grant-tables
    6. ......省略部分内容
    7. ---wq
    8. #重启mysql服务
    9. systemctl restart mysqld

    进入mysql命令行设置root密码

    1. [root@test111 ~]# mysql
    2. #更改密码
    3. mysql>update mysql.user set authentication_string=password('新的root密码')
    4. where user='root';
    5. #保存
    6. mysql>flush privileges;

    回到配置配件删去所做的修改并重启服务,之后就可以使用新的密码登录了。

    二、授权控制

    权限说明
    ALL设置GRANT OPTION之外的所有权限
    ALTER允许使用ALTER TABLE
    CREATE允许使用CREATE TTABLE
    CREATE USER允许使用CREATE USER
    DELETE允许使用DELETE
    INDEX允许使用INDEX
    INSERT允许使用INSERT
    SELECT允许使用SELECT
    UPDATE允许使用UPDATE
    DROP允许使用DROP TABLE
    REPLICATION SLAVE允许从主服务器读取二进制日志文件
    SHOW DATABASES允许显示所有库

    Ⅰ、授予权限

    grant 权限列表 on 库名.表名 to 'user'@'host' identified by ‘password’;

    需要注意的是,当用户和密码在数据库中不存在或存在但不相同时,执行授予权限操作可以起到创建和修改的作用

    Ⅱ、查看权限

    1. show grants for 'user'@'host';
    2. MySQL [mysql]> show grants for 'paul'@'localhost';
    3. +------------------------------------------+
    4. | Grants for paul@localhost |
    5. +------------------------------------------+
    6. | GRANT USAGE ON *.* TO 'paul'@'localhost' |
    7. +------------------------------------------+
    8. 1 row in set (0.00 sec)

    Ⅲ、撤销权限

    revoke 权限列表 on 库名.表名 from 'user'@'host';

    先给paul用户给予 select,update权限

    1. MySQL [mysql]> grant select,update on test.class to 'paul'@'localhost' identified by '241567';
    2. Query OK, 0 rows affected, 1 warning (0.00 sec)
    3. MySQL [mysql]> show grants for 'paul'@'localhost';
    4. +--------------------------------------------------------------+
    5. | Grants for paul@localhost |
    6. +--------------------------------------------------------------+
    7. | GRANT USAGE ON *.* TO 'paul'@'localhost' |
    8. | GRANT SELECT, UPDATE ON `test`.`class` TO 'paul'@'localhost' |
    9. +--------------------------------------------------------------+
    10. 2 rows in set (0.00 sec)

    对paul的select权限进行撤销

    1. MySQL [mysql]> revoke update on test.class from 'paul'@'localhost';
    2. Query OK, 0 rows affected (0.00 sec)
    3. MySQL [mysql]> show grants for 'paul'@'localhost';
    4. +------------------------------------------------------+
    5. | Grants for paul@localhost |
    6. +------------------------------------------------------+
    7. | GRANT USAGE ON *.* TO 'paul'@'localhost' |
    8. | GRANT SELECT ON `test`.`class` TO 'paul'@'localhost' |
    9. +------------------------------------------------------+
    10. 2 rows in set (0.00 sec)

    撤销Paul用户的所有权限

    MySQL [mysql]> revoke all on test.class from 'paul'@'localhost';
    

  • 相关阅读:
    CCNA--GNS3仿真环境的搭建及美化
    Win10安装MongoDB(详细版)
    百位上的数字(蓝桥杯真题)
    点云目标检测——pointpillars环境配置与训练
    VS2019报错:应用程序无法正常启动(0xc000007b),请单击确定关闭应用程序;VCRUNTIME140.dll报错
    Java测试(10)--- selenium
    力扣46. 全排列
    AOP是什么?如何使用AOP?
    Solr安装使用教程
    Old Graphics Software
  • 原文地址:https://blog.csdn.net/m0_71518373/article/details/126887877