用户---------》MySQL服务器
分为两个阶段
1.你有没有权限连接到MySQL
2.你有没又权限执行此操作(select,update等)
对于:
1.服务器如何判断用户有没有权连接上来?
1.你从哪里来---》Host
2.你的用户名---》User
3.你的密码------》Password
登录的案例:>mysql -h 127.0.0.1 -u root -p ********************
-h 指的是User表的Host ---(连接的地址IP)
-u 指的是User表的User ---(连接MySQL的用户名)
-p 指的是User表的Password ---(用户名的密码)
注意:user表是mysql在库中
2.账户登录到mysql,然后就是验权------------user表
Mysql库中的
user表--------》记录MySQL的用户
db表------------》判断用户是否有某个数据库的权限
tables_priv表------》判断用户是否拥有某个库的某张表的权限
db表:
mysql> select * from db\G;
*************************** 1. row ***************************
Host: localhost 允许连接的ip
Db: performance_schema 数据库
User: mysql.session 用户
Select_priv: Y 查询权限
Insert_priv: N 插入数据权限
Update_priv: N 更新数据权限
Delete_priv: N 删除数据权限
Create_priv: N 创建数据库、表或索引
Drop_priv: N 删除表
Grant_priv: N 可以将自己拥有的权限赋给其他用户
References_priv: N 建立约束
Index_priv: N 建立索引
Alter_priv: N 更改数据表
Create_tmp_table_priv: N 创建临时数据表
Lock_tables_priv: N 锁定表格
Create_view_priv: N 创建视图
Show_view_priv: N 列出视图
Create_routine_priv: N 创建函数或存储
Alter_routine_priv: N 更改函数或存储过程
Execute_priv: N 执行函数或存储过程
Event_priv: N 确定用户能否创建、修改和删除事件
Trigger_priv: N 确定用户能否创建和删除触发器
*************************** 2. row ***************************
Host: localhost
Db: sys
User: mysql.sys
Select_priv: N
Insert_priv: N
Update_priv: N
Delete_priv: N
Create_priv: N
Drop_priv: N
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Execute_priv: N
Event_priv: N
Trigger_priv: Y
user表:user表中的记录的用户的增,删,改,查都是全局的性质
mysql> select * from user\G;
*************************** 1. row ***************************
========用户列=============
Host: localhost 允许用户连接的ip
User: root 当前用户
========权限列=====(user表的权限列包括Select_priv、 Insert_priv等以priv结尾的字段。
这些字段的值只有Y和N。
Y表示该权限可以用到所有数据库上;
N表示该权限不能用到所有数据库上;
通常,可以使用GRANT语句Wie用户赋予一些权限,
也可以通过Update语句更新user表的方式来设置权限;不过,
修改user表之后,一定要执行一下FLUSH PRIVILEGES)========
Select_priv: Y 查询权限
Insert_priv: Y 插入权限
Update_priv: Y 更新权限
Delete_priv: Y 删除权限
Create_priv: Y 创建数据库、表或索引
Drop_priv: Y 删除表
Reload_priv: Y 可以用FLUSH
Shutdown_priv: Y 关闭MySQL
Process_priv: Y 显示连接进程和中断连接进程
File_priv: Y 载入文件
Grant_priv: Y 可以将自己拥有的权限赋给其他用户
References_priv: Y 建立约束
Index_priv: Y 建立索引
Alter_priv: Y 更改数据表
Show_db_priv: Y 列出数据库
Super_priv: Y 执行kill线程,change master、purge master logs、set global等命令的权限
Create_tmp_table_priv: Y 创建临时数据表
Lock_tables_priv: Y 锁定表格
Execute_priv: Y 执行函数或存储过程
Repl_slave_priv: Y 在Slave里的特殊权限
Repl_client_priv: Y 可以检查Masters和Slaves
Create_view_priv: Y 创建视图
Show_view_priv: Y 列出视图
Create_routine_priv: Y 创建函数或存储
Alter_routine_priv: Y 更改函数或存储过程
Create_user_priv: Y 创建用户
Event_priv: Y 确定用户能否创建、修改和删除事件
Trigger_priv: Y 确定用户能否创建和删除触发器
Create_tablespace_priv: Y 创建表空间
========安全列==(说明:ssl用于加密;x509标准可以用来标识用户。
普通的发行版都没有加密功能。
可以使用SHOW VARIABLES LIKE 'have_openssl'语句来查看是否具有ssl功能。
如果取值为DISABLED,那么则没有ssl加密功能。)===========
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
=======资源控制列==(默认值为0,表示无限制)========
max_questions: 0 每小时可以允许执行多少次查询;
max_updates: 0 每小时可以允许执行多少次更新
max_connections: 0 每小时可以建立多少连接
max_user_connections: 0 单个用户可以同时具有的连接数
plugin: mysql_native_password
authentication_string: *836D194EFBBFB6F5ACD8F91C975F04F2B911C395
password_expired: N
password_last_changed: 2019-09-25 06:05:51
password_lifetime: NULL
account_locked: N
3.账户管理
3.1新增用户–赋予权限
格式:
Grant [权限1,权限2,权限3...] on *.* to user@'host’ identified by ‘password’;
grant 权限1,权限2 on 数据库.数据表 user@’host’ identified by ‘password’;
常用权限:all,create,drop,insert,delete,update,select
例子1:
分配所有数据库和权限
mysql> grant all on *.* to 'test_user'@'localhost' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
例子2:
创建的用户----只有test库的权限,只有select权限
mysql> grant select on test.* to 'user_test'@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
执行数据更新不了
例子3:
针对test库做授权
给用户分配select,update,delete权限
mysql> grant select,update,delete on test.* to 'user_test'@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
截图:
3.2回收权限
格式:
revoke [权限1,权限2,权限3...] on *.* from user@'host’;
grant 权限1,权限2 on 数据库.数据表 user@’host’ ;
常用权限:all,create,drop,insert,delete,update,select
demo1:
mysql> revoke delete on test.* from user_test@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
3.3针对某个库的表做权限分配
tables_priv表------》判断用户是否拥有某个库的某张表的权限
mysql> grant select,update,delete,insert on test.test_row to user_test_row@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
截图:
客户端截图: