【MySQL】用户管理

2023-12-23 22:27:24

如果我们只能使用root用户,这样存在安全隐患。这时,就需要使用MySQL的用户管理。

在这里插入图片描述

查看MySQL用户信息

在mysql中,所有的用户信息都是存储在 mysql 库中的 uesr 表中的

在这里插入图片描述
在这里插入图片描述

mysql> select host,user,authentication_string from user;
+-----------+---------------+-------------------------------------------+
| host      | user          | authentication_string                     |
+-----------+---------------+-------------------------------------------+
| localhost | root          | *323BFBD7123A3A05DA4B9CB7BC6AB9DE2E8387A1 |
| localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+-----------+---------------+-------------------------------------------+

在这里插入图片描述

  • user:用户名
  • host:表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆
  • authentication_string: 用户密码通过password函数加密后的

创建用户

语法:

create user '用户名'@'登陆主机/ip' identified by '密码';

当我们在创建的过程中如果遇到了这样的问题

The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement。

先不要慌,这是因为MySQL 服务器正在使用 “–skip-grant-tables” 选项运行,该选项会绕过权限验证,因此无法执行创建用户的语句。为了解决这个问题,您需要先关闭 “–skip-grant-tables” 选项,然后再创建用户。

步骤为:

要关闭 "--skip-grant-tables" 选项,请按照以下步骤操作:

1.使用管理员权限登录到 MySQL 服务器
2.运行以下命令进入 MySQL 命令行界面:
mysql -u root -p
3.输入 MySQL 的管理员密码,进入 MySQL 命令行界面
4.运行以下命令关闭 "--skip-grant-tables" 选项:
mysql> FLUSH PRIVILEGES;//有时候这一步操作完成后就可以进行创建了
mysql> SET GLOBAL skip_grant_tables=0;
mysql> FLUSH PRIVILEGES;
5.然后就可以创建用户了,例如:
mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
mysql> FLUSH PRIVILEGES;

另外还有一个错误就是

-- 此时便可以使用新账号新密码进行登陆啦--备注:可能实际在设置密码的时候,因为mysql本身的认证等级比较高,一些简单的密码无法设置,会爆出
如下报错:-- ERROR 1819 (HY000): Your password does not satisfy the current policy 
requirements-- 解决方案:https://blog.csdn.net/zhanaolu4821/article/details/93622812--查看密码设置相关要求:SHOW VARIABLES LIKE 'validate_password%'; -- 这个大家下来自己玩玩--关于新增用户这里,需要大家注意,不要轻易添加一个可以从任意地方登陆的user。

当我们创建成功后,我们就可以使用我们创建的用户进行密码登录了

mysql> create user 'wh'@'localhost' identified by 'wh123321';
Query OK, 0 rows affected (0.00 sec)

在这里插入图片描述

全局权限的用户创建

在这里插入图片描述

用户删除

语法:

drop user '用户名'@'主机名'
mysql> select user,host,authentication_string from user;
 +---------------+-----------+-------------------------------------------+
 | user          
| authentication_string                     
|
 +---------------+-----------+-------------------------------------------+
 | root          
| *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75 |
 | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
 | mysql.sys     
| localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
 | localhost | *84AAC12F54AB666ECFC2A83C676908C8BBC381B1 |
 +---------------+-----------+-------------------------------------------+
 4 rows in set (0.00 sec)

mysql> drop user 'whb'@'localhost'; --删除用户
Query OK, 0 rows affected (0.00 sec)
 | host      
mysql> select user,host,authentication_string from user;
 +---------------+-----------+-------------------------------------------+
 | user          
| authentication_string                     
比特就业课
|
+---------------+-----------+-------------------------------------------+
 | root          
| %         
| *A2F7C9D334175DE9AF4DB4F5473E0BD0F5FA9E75 |
 | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
 | mysql.sys     
| localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
 +---------------+-----------+-------------------------------------------+
 3 rows in set (0.00 sec)

修改密码

修改密码的方式有两种:一种为自己改自己的密码,另外一种是root用户修改指定用户的密码

  • 自己改自己密码
set password=password('新的密码');

在这里插入图片描述

  • root用户修改指定用户的密码
set password for '用户名'@'主机名'=password('新的密码')

我们可以看到修改前和修改后的加密方式的显示时不一样的
在这里插入图片描述
因为MySQL也是表,所以我们也可以使用表的修改操作进行更改密码

数据库权限

在这里插入图片描述

给用户添加授权

语法:

 grant 权限列表 on.对象名 to '用户名'@'登陆位置' [identified by '密码']

在这里插入图片描述
在这里插入图片描述

查看权限

特定用户现有查看权限

备注:特定用户现有查看权限
mysql> show grants for 'whb'@'%';
 +-----------------------------------------------+
 | Grants for whb@%                              
|
 +-----------------------------------------------+
 | GRANT USAGE ON *.* TO 'whb'@'%'               
|
 | GRANT ALL PRIVILEGES ON `test`.* TO 'whb'@'%' |
 +-----------------------------------------------+
 2 rows in set (0.00 sec)
 
 mysql> show grants for 'root'@'%';
 +-------------------------------------------------------------+
 | Grants for root@%                                           
|
 +-------------------------------------------------------------+
 | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION |
 +-------------------------------------------------------------+
 1 row in set (0.00 sec)
  • *.* : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)
  • 库.* : 表示某个数据库中的所有数据对象(表,视图,存储过程等)
  • identified by可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户

回收权限

在这里插入图片描述
语法:

revoke 权限列表 on.对象名 from '用户名'@'登陆位置'

在这里插入图片描述

文章来源:https://blog.csdn.net/wh9109/article/details/135171362
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。