目录
一、用户管理概述
二、用户管理
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服务器,再次登录mysql就不需要输入密码了,然后再用上面修改密码的方式,任意一种,再去/etc/my.cof文件中删除刚才的命令,保存退出,重启一次mysql服务器
[root@master ~]# systemctl start mysqld #启动MySQL服务器
[root@master ~]# systemctl restart mysqld #重启MySQL服务器
2)windows系统
第一步、停止MySQL服务器
net stop MySQL
第二步、在输入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。
执行撤销INSERT、UPDATE权限
mysql> revoke insert,update on test.* from test_user@'localhost';
Query OK, 0 rows affected (0.00 sec)
查看撤销后的权限只有SELECT。