目录
一、用户
1.1 用户信息
MySQL中的用户,都存储在系统数据库mysql(它也是一个database)的user表中
mysql> use mysql;
Database changed
mysql> select host,user,authentication_string from user;
+-----------+---------------+-------------------------------------------+
| host | user | authentication_string |
+-----------+---------------+-------------------------------------------+
| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+-----------+---------------+-------------------------------------------+
字段解释:
-
host
: 表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆 -
user
: 用户名 -
authentication_string
: 用户密码通过password函数加密后的 -
*_priv
: 用户拥有的权限
1.2 添加用户
语法:
create user '用户名'@'登陆主机/ip' identified by '密码';
mysql> create user 'flash'@'localhost' identified by '********';
Query OK, 0 rows affected (0.02 sec)
mysql> select host,user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | debian-sys-maint |
| localhost | flash |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
| localhost | ubuntu |
+-----------+------------------+
7 rows in set (0.00 sec)
另外,因为mysql对于密码等级的设置,设置的密码可能会通不过,所以可以使用:
SET GLOBAL validate_password.policy = LEVEL;
-- 其中,LEVEL 可以是以下值之一:
-- 0 或 LOW:仅验证密码长度。
-- 1 或 MEDIUM:需要密码包含字母、数字和特殊字符。
-- 2 或 STRONG:在 MEDIUM 的基础上,还检查字典文件,确保密码不包含常见的弱密码。
1.3 删除用户
语法:
drop user '用户名'@'主机名';
1.4 修改用户密码
1.4.1 自己为自己修改密码
set password=password('新的密码');
1.4.2 root为指定用户修改密码
set password for '用户名'@'主机名'=password('新的密码');
二、数据库的权限
刚创建的用户没有任何权限。需要给用户授权。
2.1 给用户授权
grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码']
说明:
-
权限列表,多个权限用逗号分开
grant select on ... grant select, delete, create on .... grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限
-
*.*
: 代表本系统中的所有数据库的所有对象(表,视图,存储过程等) -
库.*
: 表示某个数据库中的所有数据对象(表,视图,存储过程等) -
identified by可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户
如下图,左侧为root用户登录的mysql,右侧为新建flash用户登录的mysql,
2.2 回收权限
revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';