一.权限级别
'数据控制语言DCL(Data Control Language)',添加用户、对使用数据的用户授权等。
1.Global level #所有库,所有表的权限。
2.Database level #某个数据库中的所有表的权限。
3.able level #库中的某个表的权限
4..Column level #表中的某个字段的权限。
二. mysql用户管理
(一)创建用户
1. 创建用户
create user user1@'localhost' identified by 'QianFeng@123';
2.验证:select * from mysql.user\G;
create 创建(关键字) user 用户(关键字) user1 用户名称(自定义) @ 分隔(关键字)‘localhost’ 允许登录的主机 identified by 身份认证(关键字)‘QianFeng@123’ 用户密码
(二) 删除用户
drop user 'user1'@'localhost';
select * from mysql.user\G;
(三)修改用户密码
1.root修改自己密码 # mysqladmin -uroot -p'123' password 'new_password'
2.丢失root用户密码
当root用户,忘记了密码。可以使用破解的方式来登录系统。修改密码。
原理:使系统在启动时,不加载密码文件。a.修改mysql启动设置
# vim /etc/my.cnf
[mysqld]
skip-grant-tables #去掉注释
b.重启mysql,无密码登录
# systemctl restart mysqld
# mysql -urootc.修改自己的密码:
mysql> update mysql.user set authentication_string=password('QianFeng@123456789') where user='root' and host='localhost';mysql> FLUSH PRIVILEGES; #刷新权限
d.修改mysql启动设置 注释掉跳过密码
(四) 登录mysql
mysql -P 3306 -u root -p123 mysql -e ‘show tables’
# -h 指定主机名 【默认为localhost】
# -P MySQL服务器端口 【默认3306】 大P
# -u 指定用户名 【默认root】
# -p 指定登录密码 【默认为空密码】
# 此处mysql为指定登录的数据库名
# -e 接SQL语句
免登录查询数据库
mysql -uroot -p'QianFeng@123' -hlocalhost -P 3306 mysql -e 'show tables'
(五) mysql 权限原理
grant 权限列表 on 库名.表名 to '用户名'@'客户端主机' [identified by '密码' with option参数];
'权限列表'
all: 所有权限(不包括授权权限)
select,update 查询更新
'数据库.表名'
*.* 所有库下的所有表
web.* web库下的所有表
web.stu_info web库下的stu_info表
grant SELECT (id), INSERT (name,age) ON mydb.mytbl to 'user8'@'localhost' identified by 'QianFeng@123';
'客户端主机'
% 所有主机
192.168.2.% 192.168.2.0网段的所有主机
192.168.2.168 指定主机
localhost 指定主机
(六)MySQL权限示例
'赋予权限'
授权目标
授予admin3 对bbs库 所有的表,具有所有权限(不包含授权)
GRANT ALL ON bbs.* TO admin3@'%' IDENTIFIED BY 'QianFeng@13910604684';
赋权示例
1.准备测试账户 root账户创建:CREATE USER admin3@'%' IDENTIFIED BY 'QianFeng@123';
2.授权账户 root账户授权 GRANT ALL ON bbs.* TO admin3@'%' IDENTIFIED BY 'QianFeng@13910604684';
3.使用测试账户操作数据库
[root@localhost ~]# mysql -uadmin3 -p'QianFeng@123'
mysql> create database bbs;
试试创建别的库 mysql> create database bba;
ERROR 1044 (42000): Access denied for user 'admin3'@'%' to database 'bba'
进入bbs库,创建数据表和插入数据。
授权验证完毕
'回收权限'
'查看权限'
查看自己的权限 SHOW GRANTS\G
查看别人的权限 SHOW GRANTS FOR admin3@'%'\G
'回收权限REVOKE'
REVOKE 权限列表 ON 数据库名 FROM 用户名@‘客户端主机’
REVOKE ALL PRIVILEGES ON bbs.* FROM admin3@’%’; #回收所有权限
'删除用户的版本问题'
5.6之前,先 revoke all privilege 再 drop user
5.7之后,直接 drop user