mysql数据库DCL
mysql数据库DCL
DCL(授权控制),将一部分的权限给部分用户,部分用户再管理库、表、字段。
权限级别
权限的级别代表有哪些权限可以授予给用户使用。
权限有以下级别:
global level 所有库,所有表的权限
database level某个数据库中所有表的权限.
table level库中的某个表的权限
column level表中的某个字段的权限
通常使用的是database level。
mysql用户管理
mysql权限授予的时候默认是root用户。
可以查看用户的位置是在mysql库中的user表中。
可以查看user表的结构
desc mysql.user\G;
创建用户
# localhost代表本地登陆
# create user 用户@"登陆点" 确认方式 密码;
create user user1@"localhost" identified by "Yue@123456";
create user user1@"192.168.1.%";
可以使用select查询创建的用户
select host,user from mysql.user;
可以使用user1登陆Mysql.
mysql -uuser1 -p"Yue@123456"
删除用户
drop user "user1"@"localhost";
修改密码
用户修改自己的密码
set password=password("Ui@12367");# 设置密码
flush privileges;# 刷新
可以在shell中修改mysql的密码:
mysqladmin -uroot -p"Mysql@Password123" password "Yue@12345"
如何破解mysql的密码
1.修改mysql的配置文件,影响启动方式
/etc/my.cnf是mysql的主配置文件。
vi /etc/my.cnf
在文件中另起一行编写
skip-grant-tables
2.重启
systemctl restart mysqld
3.无密码登陆
mysql -uroot
4.改密码
使用root账户登录到mysql中,要修改mysql的密码:
update mysql.user set authentication_string=password("Mysql@Password123") where user="root" and host="local host";
flush privileges;
5.修改配置文件
退出mysql,回到shell中,将修改的主配置文件的跳过密码注释掉:
# skip-grant-tables
6.重启,使用新密码登录。
systemctl restart mysqld
mysql -uroot -p"Mysql@Password123"
用户登录
# mysql -u用户 -p密码 -P Mysql服务器的端口 数据库名称 -e执行 "命令" -h 远程服务器
mysql -uroot -p"Mysql@Password123" -P 3306 mysql -e "show tables"
mysql支持远程登录
mysql服务器可以用命令登录另一台的客户机的mysql
mysql权限原理
mysql授权的语法:
grant 权限列表 on 库名.表名 to "用户名"@"客户机" [identified by "密码" with option参数];
权限列表有all所有权限(不包括授权权限)和select、update查询更新
数据库.表名有“*”
(所有库下的所有表),比如web.*
表示web库下的所有表
客户端主机有: 192.168.1.*
该网段下的所有主机
with option参数:grant option授权选项
mysql权限示例
授予admin3对bbs库所有的表,具有所有权限但是不包含授权权限
grant all on bbs.* to "admin3"@"localhost" identified by "Mysql@Password123";
回收权限:
查看自己的权限
show grants\G
作为root还可以查看别人的权限:
show grants for admin3@"localhost"\G
回收某个用户的权限:
# revoke 权限列表 on 数据库名from 用户名@"客户端主机";
revoke all privileges on bbs.* from admin3@"localhost";
还没有评论,来说两句吧...