mysql 用户管理详解

141 阅读3分钟

Mysql用户可分为 普通用户 和 root用户 root用户是超级管理员,拥有所有权限,包括创建用户,删除用户和修改用户的密码等管理权限,普通用户只拥有被授予的各种权限

添加用户

存放用户信息的表

mysql 的用户 放在mysql数据库中的user表中

select user,host,authentication_string from mysql.user;



root@localhost     默认存在的, 并且只能  本地登录无法远程登录

image.png

7.2 查看当前使用用户

(root@localhost) [(none)]> select user();

新建用户

格式:


CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];
----------------------------------------------------------------------------------------------------------
'用户名':指定将创建的用户名
'来源地址':指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录可用通配符%
'密码':若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密;
        若使用加密密码,需要先使用SELECT PASSWORD('密码'); 获取密文,再在语句中添加 PASSWORD '密文';
----------------------------------------------------------------------------------------------------------

例子

建立用户

image.png

用另一台机子登录测试

image.png

修改用户名称

格式:

rename user '旧名字' to '新名字;

例子:

rename user 'kunkun'@'192.168.10.%' to 'ikun'@'192.168.10.%';

7.5删除用户

格式:

drop  user '用户名';

例子:

 drop user 'cxk'@'%';

7.6 修改用户密码

密码有安全性策略可以修改取消

set global validate_password_policy=0;
set global validate_password_length=1;
#修改密码策略

格式:

SET PASSWORD = PASSWORD('abc123');  #只能改自己当前
​
set password for '用户' = password('密码');    #

例子:

set password = 'abc123';    #给当前用户修改密码set password for 'lisi'@'192.168.91.%' = 'abc123';   #给其他用户修改密码

7.7 破解密码

1 修改配置文件啊

vim /etc/my.cnf
[mysqld]
skip-grant-tables 
#数据库的单用户模式   此模式下权限受到限制,很多功能无法使用, 除了破解密码不要加此项
skip-networking  #MySQL8.0不需要#然后清空密码
update mysql.user set authentication_string='' where user='root' and host='localhost';
#注意刷新后生效
flush privileges;

7.8远程登录

mysql -ukunkun -h192.168.10.20   -p'密码' 

例子:

客户机
mysql -uikun   -h192.168.10.20   -p'123123' 

用户权限管理

查看权限

SHOW GRANTS FOR 'ikun'@'192.168.10.%';
#USAGE权限只能用于数据库登陆,不能执行任何操作;USAGE权限不能被回收,即 REVOKE 不能删除用户。

image.png

7.9.2授予权限

GRANT语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT语句将会创建新的用户;当指定的用户名存在时, GRANT 语句用于修改用户信息。

格式:

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];

例子

grant  all   on   *.*  to  ikun@'192.168.10.%';
Query OK, 0 rows affected (0.00 sec)
# 另一台机子测试
MySQL [(none)]> show databases
    -> ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db1                |
| db2                |
| db3                |
| hellodb            |
| mydatabase         |
| mysql              |
| performance_schema |
| sys                |
| zabbix             |
+--------------------+

撤销权限

格式:

REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址;

例子:

REVOKE ALL ON *.* FROM 'cxk'@'%';

7.9.4 远程连接图形界面

image.png

image.png