SQL数据库操作语言DCL
权限级别
- Global level 所有库,所有表的权限
- Database level 某个数据库中的所有表的权限
- Table level 库中的某个表的权限
- Column level 表中的某个字段的权限
MySQL用户管理
- 创建用户
语法:
create user 用户名@'主机名' identified by '密码';
例:
create user user1@'localhost' identified by 'Xiaodunan123';
验证:
select * from mysql.user\G;
- 删除用户(需要使用管理员权限)
drop user 'user1'@'localhost';
- 修改用户密码
(1)root修改自己的密码
- 进入系统之前
mysqladmin -uroot -p'老密码' password '新密码';
- 进入系统之后
alter user 'root'@'localhost' identified by '新密码';
(2)丢失root用户密码
- 修改mysql启动设置
vim /etc/my.cf
[mysqld]
skip-grant-tables
- 重启mysql,无密码登录
systemctl restart mysqld
mysql -uroot
update mysql.user set authentication_string='' where user='root';
select user,authentication_string from mysql.user;
- 修改mysql启动设置,退出mysql把/etc/my.cnf的跳过密码设置注释掉
vim /etc/my.cf
[mysqld]
#skip-grant-tables
- 使用mysqladmin修改新密码
mysqladmin -uroot -p password '新密码';
- 登录MySQL
例:
mysql -p 3306 -u root -p123 mysql -e 'show tables'
-P MySQL服务器端口 【默认3306】
-u 指定用户名 【默认root】
-p 指定登录密码 【默认为空密码】
此处mysql为指定登录的数据库
-e 接SQL语句
MySQL权限原理
语法:
grant 权限列表 on 库名.表名 to '用户名'@'客户端主机' [identified by '密码' with option 参数];
MySQL权限示例
- 赋予权限
例:授予admin3对bbs库所有的表,具有所有权限(不包含授权)
create user admin3@'localhost' identified by'admin123';
grant all on bbs.* to admin3@'%';
- 使用已有账号给其他账号赋予权限
- 创建一个新用户
create user admin6@'localhost' identified by 'admin@123';
- 赋予权限
grant all on *.* to admin6@'localhost' with grant option;
- 退出使用admin6账号登录
mysql -uadmin6 -p'admin@123';
- 创建一个用户
create user admin7@'localhost' identified by 'admin@123';
- 授权
grant all on bbs.* to admin7@'localhost';
- 使用服务器远程连接MySQL服务器
- 开启多服务器,安装mysql客户端
wget https://dev.mysql.com/get/mysql84-community-release-el7-1.noarch.rpm
yum intsall -y mysql84-community-release-el7-1.noarch.rpm
yum install -y mysql-commnuity-client
- 到mysql服务器授权
create user admin8@'客户端IP' identified by 'admin@123';
grant all on bbs.* to admin8@'客户端IP';
- 到mysql客户端登录MySQL服务器
mysql -uadmin8 -padmin@123 -h 服务器IP
- 回收权限
(1)查看权限
- 查看自己的权限
show grants\G
- 查看别人的权限
show grants for admin3@'%'\G;
(2)回收权限REVOKE
语法:
REVOKE 权限列表 ON 数据库名 FROM 用户名@'客户端主机';
示例:
REVOKE ALL PRIVILEGES ON bbs.* FROM admin3@'%'; //回收所有权限
(3)删除用户的版本问题
- 5.6之前,先revoke all privilege 再 drop user
- 5.7之后,直接drop user