Mysql用户可分为 普通用户 和 root用户 root用户是超级管理员,拥有所有权限,包括创建用户,删除用户和修改用户的密码等管理权限,普通用户只拥有被授予的各种权限
添加用户
存放用户信息的表
mysql 的用户 放在mysql数据库中的user表中
select user,host,authentication_string from mysql.user;
root@localhost 默认存在的, 并且只能 本地登录无法远程登录
7.2 查看当前使用用户
(root@localhost) [(none)]> select user();
新建用户
格式:
CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];
----------------------------------------------------------------------------------------------------------
'用户名':指定将创建的用户名
'来源地址':指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录可用通配符%
'密码':若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密;
若使用加密密码,需要先使用SELECT PASSWORD('密码'); 获取密文,再在语句中添加 PASSWORD '密文';
----------------------------------------------------------------------------------------------------------
例子
建立用户
用另一台机子登录测试
修改用户名称
格式:
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 不能删除用户。
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'@'%';