MySQL之DCL管理用户
1.DBA
DBA:数据库管理员
2.查询用户
host里的通配符%表示可以在任意主机使用用户登录数据库;localhost代表只可以在本机电脑登录
USE myql;-- root用户登录,切换到mysql数据库
SELECT * FROM USER;--查询user表
3.管理用户
DCL:管理用户,授权
含义:公司的有人访问同一个数据库,但是都拥用他们每个人自己的账户,不可能都用root账户,在系统自带的"mysql"数据库里的user表格里查看用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';-- 添加用户
DROP USER '用户名'@'主机名';-- 删除用户
4.修改密码
修改用户密码(8.5版本):
root用户登录,修改密码前先检查authentication_string是否为空:
如果不为空,将字段置为空再修改;
use mysql;
update user set authentication_string='' where user='用户名';--将字段置为空
ALTER user '用户名'@'主机名' IDENTIFIED BY '新密码';
如果为空,则直接修改
use mysql;
ALTER user '用户名'@'主机名字' IDENTIFIED BY '新密码';
6.权限管理
查询权限:
SHOW GRANTS FOR '用户名'@'主机名';
授予权限:
注:权限列表里可以写很多权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
撤销权限:
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
7.忘记密码
mysql中忘记了root用户的密码?(8.5)
1.在管理员权限CMD中用关闭服务 : net stop mysql
2.命令行开输入:mysqld --console --skip-grant-tables --shared-memory
3.然后, 管理员权限启动另一个 CMD 命令行, 输入 mysql 直接登陆, 接着输入以下命令, 将 root 密码置为空
4.在第二个cmd窗口里输入:
UPDATE mysql.user SET authentication_string=’’ WHERE user=‘root’ and host=‘localhost’;
5.最后, 关闭两个 CMD
6.再通过管理员权限开启CMD,输入: net start mysql
7.输入 mysql -u root 直接登陆,并输入以下:
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘414524’;
8.mysql -uroot -p414524 即可登录
8.演示(查询用户)
这个是自己电脑的
这个是阿里云服务器的
9.演示(管理用户)
root用户登录
use mysql
CREATE USER 'qwwr'@'localhost' IDENTIFIED BY '123';
CREATE USER 'lisi'@'%' IDENTIFIED BY '123';
drop user 'qwwr'@'localhost' ;
10.演示(修改密码)
update user set authentication_string='' where user='lisi';-- 将字段置为空
ALTER user 'lisi'@'%' IDENTIFIED BY '789';-- 修改密码为789
11.演示(权限管理)
SHOW GRANTS FOR 'lisi'@'%';
SHOW GRANTS FOR 'root'@'localhost';
grant select on db3.account to 'lisi'@'%';
grant select,delete,update on db3.account to 'lisi'@'%';
GRANT ALL ON *.* TO 'lisi'@'%'; -- 给lisi所有权限
REVOKE ALL ON *.* FROM 'lisi'@'%';
注:这表格的意思是,lisi用户目前只有一个权限,即可以登录的权限
发现没有权限,使用不了
发现root用户有很多权限
只能够查询db3的count表