SQL数据库操作语言DCL

权限级别

  1. Global level 所有库,所有表的权限
  2. Database level 某个数据库中的所有表的权限
  3. Table level 库中的某个表的权限
  4. Column level 表中的某个字段的权限

MySQL用户管理

  1. 创建用户
    语法:
create user 用户名@'主机名' identified by '密码';

例:

create user user1@'localhost' identified by 'Xiaodunan123';

验证:

select * from mysql.user\G;
  1. 删除用户(需要使用管理员权限)
drop user 'user1'@'localhost';
  1. 修改用户密码
    (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 '新密码';
  1. 登录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权限示例

  1. 赋予权限
    例:授予admin3对bbs库所有的表,具有所有权限(不包含授权)
create user admin3@'localhost' identified by'admin123'; 
grant all on bbs.* to admin3@'%';
  1. 使用已有账号给其他账号赋予权限
  • 创建一个新用户
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';
  1. 使用服务器远程连接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. 回收权限
    (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
posted @ 2024-06-23 10:03  小肚腩吖  阅读(1)  评论(0编辑  收藏  举报