MySQL 用户管理操作

目录

一、用户管理概述

二、用户管理

1、创建用户

2、删除用户

三、账户密码管理

1、root用户修改自己的密码

2、ROOT用户修改其他普通用户密码

3、普通用户修改自己的密码

 4、ROOT用户密码忘记解决办法

1)Linux系统

2)windows系统

四、用户权限

1、授予权限

2、查看权限

3、撤销权限


一、用户管理概述

MySQL是一个多用户的数据库,具有强大的访问控制系统,可以为不同用户指定允许的权限,MySQL用户可以分为普通用户和修改用户的密码等管理权限;普通用户只拥有被授予的各种权限。用户管理包括管理用户账户、权限等。

二、用户管理

1、创建用户

基本语法1---这也是最推荐使用的一种方法

CREATE USER <'用户名'@'地址'> IDENTIFIED BY ‘密码’;

 eg:

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

 基本语法2---此方法慎用,因为user系统表中存储了全局级别的权限,以及影响其他账户的信息,如果破坏了user表中的记录,可能会对MySQL服务器造成很大的影响。

insert into MySQL.user(Host,User,Password) values
('host','username',PASSWORD('password'));

基本语法三---推荐使用,同时可以给用户授权于权限

GRANT SELECT ON *.* TO '用户名'@'主机名' IDENTIFIED BY '密码';
FLUSH PRIVILEGES;

2、删除用户

基本语法1---推荐使用

drop user '用户名'@'主机号';

 eg:

mysql> drop user 'test_user'@'localhost';
Query OK, 0 rows affected (0.00 sec)
删除前查看用户表
mysql> select Host,User from mysql.user;
+-----------+-----------+
| Host      | User      |
+-----------+-----------+
| %         | root      |
| localhost | mysql.sys |
| localhost | root      |
| localhost | test_user |
+-----------+-----------+
4 rows in set (0.00 sec)
删除后查看用户表
mysql> select Host,User from mysql.user;
+-----------+-----------+
| Host      | User      |
+-----------+-----------+
| %         | root      |
| localhost | mysql.sys |
| localhost | root      |
+-----------+-----------+
3 rows in set (0.00 sec)

 基本语法2

delete from mysql.user where User='要删除的用户名' and Host='要删除的用户的主机名';

三、账户密码管理

1、root用户修改自己的密码

语法1

mysqladmin -u root -h localhost -p password '新密码';

 eg:

[root@master ~]#  mysqladmin -u root -h localhost -p password 'fzw@123';
Enter password: 

语法2

update mysql.user set Password=PASSWORD("新密码") where User="root" and Host="localhost";
#修改完刷新一遍
FLUSH PRIVILEGES;

 语法3

set PASSWORD=PASSWORD("新密码");

2、ROOT用户修改其他普通用户密码

 语法1

set PASSWORD FOR '用户名'@'主机名' =PASSWORD("新密码");

语法2

update mysql.user set Password=PASSWORD("新密码")
where Host='主机号' and User='用户名';

 语法3

grant usage on *.* to '用户名'@'主机号' identifed by '新密码';

3、普通用户修改自己的密码

语法

set PASSWORD=PASSWORD('新密码');

 4、ROOT用户密码忘记解决办法

1)Linux系统

先关闭mysql服务器

[root@master ~]# systemctl stop mysqld

在/etc/my.cnf文件中添加下面命令

vim /etc/my.cnf

#在该文件[mysql]标签下任意位置添加此命令
skip-grant-tables

MySQL 用户管理操作_第1张图片 保存后退出

启动mysql服务器,再次登录mysql就不需要输入密码了,然后再用上面修改密码的方式,任意一种,再去/etc/my.cof文件中删除刚才的命令,保存退出,重启一次mysql服务器

[root@master ~]# systemctl start mysqld #启动MySQL服务器
[root@master ~]# systemctl restart mysqld #重启MySQL服务器

2)windows系统

第一步、停止MySQL服务器

net stop MySQL

MySQL 用户管理操作_第2张图片

第二步、在输入mysqld --skip-grant-table

 

再次登录mysql就不用输入密码了 ,然后登录成功用上面的任意一种方法修改用户的密码。

四、用户权限

1、授予权限

基本语法

grant 权限列表 on 库名.表名 to 用户名@'客户端主机'
[identified by '密码' with option参数];

权限列表:可以根据需求给该用户什么权限

option参数:

GRANT OPTION: 授权选项

MAX_QUERIES_PER_HOUR: 定义每小时允许执行的查询数

MAX_UPDATES_PER_HOUR: 定义每小时允许执行的更新数

MAX_CONNECTIONS_PER_HOUR: 定义每小时可以建立的连接数

MAX_USER_CONNECTIONS: 定义单个用户同时可以建立的连接数

eg:该语句是给用户test_user权限在test库中所有表select、insert、update权限。

mysql> grant select,insert,update on test.* to test_user@'localhost';
Query OK, 0 rows affected (0.00 sec)

eg: 该语句是给用户所有库中的所有表,授予全部权限,几乎给ROOT权限一样了。

grant all on *.* to 用户名@localhost; 

注:* 号代表所有。 

eg:给用户指定库中指定的字段执行select权限

grant select(字段名) on 库名.表名 to 用户名@主机名;

2、查看权限

#1、查看当前用户(自己)权限
show grants; 

#ROOT查看指定用户权限
show grants for dba@localhost;

#ROOT查看用户的全部权限
grant all on *.* to dba@localhost;

 eg:查看刚才给test_user用户授予的权限

​
mysql> show grants for test_user@'localhost';
+---------------------------------------------------------------------+
| Grants for test_user@localhost                                      |
+---------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test_user'@'localhost'                       |
| GRANT SELECT, INSERT, UPDATE ON `test`.* TO 'test_user'@'localhost' |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)

3、撤销权限

基本语法

revoke 权限列表 on 库名.表名 from 用户名@主机名;

eg:

先查看该用户的权限有SELECT、INSERT、UPDATE。

MySQL 用户管理操作_第3张图片

 执行撤销INSERT、UPDATE权限

mysql> revoke insert,update on test.* from test_user@'localhost';
Query OK, 0 rows affected (0.00 sec)

查看撤销后的权限只有SELECT。

MySQL 用户管理操作_第4张图片

你可能感兴趣的:(MySQL,mysql,数据库)