MYSQL数据库学习十六 安全性机制
16.1 MYSQL数据库所提供的权限
16.1.1 系统表 mysql.user
1. 用户字段
- Host:主机名;
- User:用户名;
- Password:密码。
2. 权限字段
以“_priv”字符串结尾的字段
通常,可以使用GRANT语句为用户赋予一些权限,也可以通过Update语句更新user表的方式来设置权限;
不过,修改user表之后,一定要执行一下FLUSH PRIVILEGES,否则可能会出现如下错误:
Error (1133): Can’t find any matching row in the user table
| user表中的列 | 权限名称 | 权限范围 |
| Create_priv | CREATE | 数据库、表或索引 |
| Drop_priv | DROP | 数据库或表 |
| Grant_priv | GRANT OPTION | 数据库、表、存储过程、函数 |
| References_priv | REFERENCES | 数据库和表 |
| Alter_priv | ALTER | 修改表 |
| Delete_priv | DELETE | 删除表 |
| Index_priv | INDEX | 用索引查询表 |
| Insert_priv | INSERT | 插入表 |
| Select_priv | SELECT | 查询表 |
| Update_priv | UPDATE | 更新表 |
| Create_view_priv | CEATE VIEW | 创建视图 |
| Show_view_priv | SHOW VIEW | 查看视图 |
| Create_routine_priv | CREATE ROUTINE | 创建存储过程或函数 |
| Alter_routine_priv | ALTER ROUTINE | 修改存储过程或函数 |
| Execute_priv | EXECUTE | 执行存储过程或函数 |
| File_priv | FILE | 加载服务器主机上的文件 |
| Create_tmp_table_priv | CREATE TEMPORARY TABLES | 创建临时表 |
| Lock_tables_priv | LOCK TABLES | 锁定表 |
| Create_user_priv | CREATE USER | 创建用户 |
| Process_priv | PROCESS | 服务器管理 |
| Reload_priv | RELOAD | 重新加载权限表 |
| Repl_client_priv | REPLICATION CLIENT | 服务器管理 |
| Repl_slave_priv | REPLICATION SLAVE | 服务器管理 |
| Show_db_priv | SHOW DATABASES | 查看数据库 |
| Shutdown_priv | SHUTDOWN | 关闭服务器 |
| Super_priv | SUPER | 超级权限 |
| Event_priv | 创建、修改和删除事件 | |
| Trigger_priv | 创建和删除触发器 |
3. 安全字段
| 字段名 | 含义 |
| ssl_type | 支持ssl标准加密的安全字段 |
| ssl_cipher | 支持ssl标准加密的安全字段 |
| x509_issuer | 支持x509标准的字段 |
| x509_subject | 支持x509标准的字段 |
在MySQL中,包含ssl字符串的字段主要用来实现加密,包含x509字符串的字段主要用来标识用户。
MySQL的字段通常不支持ssl标准,可以通过以下语句查看字段是否支持ssl标准:
SHOW VARIABLES LIKE 'have_openssl'
4.资源控制字段
- max_questions:每小时可以允许执行多少次查询;
- max_updates:每小时可以允许执行多少次更新;
- max_connections:每小时可以建立多少连接;
- max_user_connections:单个用户可以同时具有的连接数。
默认值为0,表示无限制。
16.1.2 系统表 mysql.db 和 mysql.host
1.用户字段
mysql.db
- Host:主机名;
- User:用户名;
- Db:数据库名。
mysql.host 是mysql.db的扩展
- Host:主机名;
- Db:数据库名。
当查找某个用户的权限,首先会从系统表 mysql.db 中查找,如果找不到Host的值,则到 mysql.host 去查找。
2.权限字段
mysql.db比mysql.host多了两个字段:
- Create_routine_priv:创建存储过程或函数权限。
- Alter_routine_priv:修改存储过程或函数权限。
16.1.3 其他权限表
- mysql.tables_priv:实现单个表的权限设置。
- columns_priv:实现单个字段列的权限设置。
16.2 MYSQL数据库所提供的用户机制
16.2.1 登录和退出MySQL
mysql -h hostname|hostIP -p port -u username -p DatabaseName -e "SQ语句"
-p port:未指定默认为3306;
DatabaseName:未指定默认为mysql.
EXIT|QUIT
16.2.2 创建普通用户账户
1.CREATE USER
CREATE USER username[IDENTIFIED BY [PASSWORD] 'password']
[,IDENTIFIED BY [PASSWORD] 'password']
......
2.INSERT INTO
INSERT INTO mysql.user(Host,User,Password[,ssl_cipher,x509_issuer,x509_subject])
VALUES('%','username',PASSWORD('password')[,'','','']);
3.GRANT
GRANT priv_type ON databasename.tablename
TO username[IDENTIFIED BY [PASSWORD] 'password']
[,username [IDENTIFIED BY [PASSWORD] 'password']]
......
16.2.3 利用root修改root用户账号密码
1.mysqladmin
mysqladmin -u username -p password "newpassword";
2.SET PASSWORD
SET PASSWORD=PASSWORD("newpassword");
3.UPDATE
UPDATE mysql.user SET password=PASSWORD("newpassword")
WHERE user="root" AND host="localhost";
16.2.4 利用root修改普通用户账号密码
1.GRANT
GRANT priv_type ON database.table
TO user[IDENTIFIED BY [PASSWORD] "newpassword"];
2.SET PASSWORD FOR
SET PASSWORD FOR
'username'@'hostname'=PASSWORD("newpassword");
*当通过普通用户账户登录到MySQL服务器后,可以通过SET命令修改自己的密码。
SET PASSWORD=PASSWORD("newpassword");
3.UPDATE
UPDATE mysql.user SET password=PASSWORD("newpassword")
WHERE user="username" AND host="localhost";
16.2.5 删除普通用户账号
1.DROP USER
DROP USER user1[,user2] ...
2.DELETE FROM
DELETE FROM mysql.user
WHERE user="username" AND host="localhost";
16.3 权限管理
16.3.1 对用户进行授权
GRANT priv_type [(column_list)] ON database.table
TO user [IDENTIFIED BY [PASSWORD] 'password']
[,user [IDENTIFIED BY [PASSWORD] 'password']]
...
WITH with_option[with_option]
with_option参数取值:
- GRANT OPTION:被授权的用户可以将这些权限赋予给别的用户;
- MAX_QUERIES_PER_HOUR count:设置每小时可以允许执行count次查询;
- MAX_UPDATES_PER_HOUR count:设置每小时可以允许执行count次更新;
- MAX_CONNECTIONS_PER_HOUR count:设置每小时可以建立count个连接;
- MAX_USER_CONNECTIONS count:设置单个用户可以同时具有的count个连接数;
16.3.2 查看用户所拥有权限
SHOW GRANTS FOR 'username'@'localhost' \G
16.3.3 收回用户所拥有权限
REVOKE priv_type[(column_list)] ON database.table
FROM user1 [IDENTIFIED BY[PASSWORD] 'password']
[,user2 [IDENTIFIED BY[PASSWORD] 'password']]
...
收回全部权限:
REVOKE ALL PRIVILEGES,GRANT OPTION
FROM user1 [IDENTIFIED BY[PASSWORD] 'password']
[,user2 [IDENTIFIED BY[PASSWORD] 'password']]
...
参考博客:http://www.cnblogs.com/kissdodog/p/4173337.html
MYSQL数据库学习十六 安全性机制的更多相关文章
- MYSQL数据库学习十八 数据库维护和性能提高
18.1 数据备份 可能造成数据损失的原因有: 存储介质故障:保存数据库文件的磁盘设备损坏,用户没有数据库备份导致数据彻底丢失. 用户的错误操作:如误删了某些重要数据,甚至整个数据库. 服务器的彻底瘫 ...
- MYSQL数据库学习十五 事务
15.1 事务概述 当多个用户访问同一份数据,一个用户在更改数据的过程中可能有其他用户同时发起更改请求,为保证数据库记录的更新从一个一致性状态变为另一个一致性状态,使用事务处理是非常必要的. 事务有以 ...
- MYSQL数据库学习十四 存储过程和函数的操作
14.1 为什么使用存储过程和函数 一个完整的操作会包含多条SQL语句,在执行过程中需要根据前面SQL语句的执行结果有选择的执行后面的SQL语句. 存储过程和函数的优点: 允许标准组件式编程,提高了S ...
- MYSQL数据库学习十二 使用MySQL运算符
12.1 算术运算符 + - * /(DIV) %(MOD) 12.2 比较运算符 > < = <=> != <> >= <= BETWEEN AND ...
- MYSQL数据库学习十 单表数据记录查询
10.1 简单数据记录查询 SELECT field1,field2,...fieldn FROM table_name; “*” ——查询所有记录 SELECT * FROM table_name; ...
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- mysql进阶(二十六)MySQL 索引类型(初学者必看)
mysql进阶(二十六)MySQL 索引类型(初学者必看) 索引是快速搜索的关键.MySQL 索引的建立对于 MySQL 的高效运行是很重要的.下面介绍几种常见的 MySQL 索引类型. 在数 ...
随机推荐
- jsencrypt参数前端加密c#解密
写程序时一般是通过form表单或者ajax方式将参数提交到服务器进行验证,如何防止提交的请求不被抓包后串改,虽然无法说绝对安全却给非法提交提高了难度,本篇采用jsencypt在前端进行加密的并且用C# ...
- python每天一个小练习-列表元素非唯一
列表元素非唯一 来源 checkio 需求 你将得到一个含有整数(X)的非空列表.在这个任务里,你应该返回在此列表中的非唯一元素的列表.要做到这一点,你需要删除所有独特的元素(这是包含在一个给定的列表 ...
- 理解Android DecorView
一.DecorView为整个Window界面的最顶层View. 二.DecorView只有一个子元素为LinearLayout.代表整个Window界面,包含通知栏,标题栏,内容显示栏三块区域. 三. ...
- R语言︱情感分析—词典型代码实践(最基础)(一)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:词典型情感分析对词典要求极高,词典中 ...
- 《实战Nginx》读书笔记--Nginx配置文件
先看下一份的Nginx 的配置 #user nobody nobody;#使用的用户和组 worker_processes 4;#工作进程的个数,一般等于CPU核数或者总核数的两倍 #error_lo ...
- 错误代码: 1054 Unknown column 't.createUsrId' in 'group statement'
1.错误描述 1 queries executed, 0 success, 1 errors, 0 warnings 查询:select count(t.id),t.`createUserId` fr ...
- freemarker之数组
freemarker之数组 1.设计思路 (1)声明一个数组 (2)打印数组中的元素 2.设计源码 <#--freemarker数组--> <#assign nums=[12,34, ...
- Vxworks下的SATA提速
1. ATA接口的三种数据传输方式 (1)PIO(Programmable Input-Output)传输,可以分为PIO寄存器传输和PIO数据传输.PIO寄存器传输主要用于对ATA设备中 ...
- Caused by: java.lang.ClassNotFoundException: org.hibernate.annotations.common.reflection.MetadataPro
1.错误描述 信息: MLog clients using java 1.4+ standard logging. 2014-7-12 19:29:20 com.mchange.v2.c3p0.C3P ...
- Linux查看磁盘剩余空间
Linux查看磁盘剩余空间 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ df 文件系统 1K-blocks 已用 可用 已用% 挂载点 /dev/sda8 ...