MYSQL数据库学习十六 安全性机制
2015-07-06 11:01
686 查看
16.1 MYSQL数据库所提供的权限
Host:主机名;
User:用户名;
Password:密码。
2. 权限字段
以“_priv”字符串结尾的字段
通常,可以使用GRANT语句为用户赋予一些权限,也可以通过Update语句更新user表的方式来设置权限;
不过,修改user表之后,一定要执行一下FLUSH PRIVILEGES,否则可能会出现如下错误:
Error (1133): Can’t find any matching row in the user table
3. 安全字段
在MySQL中,包含ssl字符串的字段主要用来实现加密,包含x509字符串的字段主要用来标识用户。
MySQL的字段通常不支持ssl标准,可以通过以下语句查看字段是否支持ssl标准:
4.资源控制字段
max_questions:每小时可以允许执行多少次查询;
max_updates:每小时可以允许执行多少次更新;
max_connections:每小时可以建立多少连接;
max_user_connections:单个用户可以同时具有的连接数。
默认值为0,表示无限制。
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:修改存储过程或函数权限。
columns_priv:实现单个字段列的权限设置。
16.2 MYSQL数据库所提供的用户机制
-p port:未指定默认为3306;
DatabaseName:未指定默认为mysql.
2.INSERT INTO
3.GRANT
2.SET PASSWORD
3.UPDATE
2.SET PASSWORD FOR
*当通过普通用户账户登录到MySQL服务器后,可以通过SET命令修改自己的密码。
3.UPDATE
2.DELETE FROM
16.3 权限管理
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个连接数;
收回全部权限:
参考博客:/article/4677301.html
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 | 创建和删除触发器 |
字段名 | 含义 |
ssl_type | 支持ssl标准加密的安全字段 |
ssl_cipher | 支持ssl标准加密的安全字段 |
x509_issuer | 支持x509标准的字段 |
x509_subject | 支持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 USERCREATE 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.mysqladminmysqladmin -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.GRANTGRANT 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 USERDROP 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']] ...
参考博客:/article/4677301.html
相关文章推荐
- MYSQL数据库学习十五 事务
- mysql 5.5 卸载
- MYSQL数据库学习十四 存储过程和函数的操作
- MySQL的配置选项
- MYSQL数据库学习十三 使用MySQL常用函数
- MYSQL数据库学习十二 使用MySQL运算符
- 欢迎使用CSDN-markdown编辑器
- 关于Mysql数据库中date()格式化
- MySql
- innodb配置优化原则
- mysql 常用语句
- mysql-mmm的6种状态及转变原因
- mac mysql Can't connect to local MySQL server through socket '/tmp/mysql.sock'
- mysql 主从复制用户权限限制
- Mysql数据类型
- MySql连接报错1045
- 关于mysql对字符串的数字的排序
- MySQL和MSSQL下,text 、ntext、 image、blob的比较
- mysqlbinlog
- MySQL索引不仅影响查询速度而且影响查询结果的排序