MySQL数据库权限命令简介
MySQL权限管理
MySQL权限管理系统通过权限表来控制用户对数据库的访问,这些权限表存储在mysql
数据库中,并由mysql_install_db
脚本初始化,主要包含以下六张表:
1、user:列出可以连接服务器的用户及其口令,并指定他们有哪种全局(超级用户)权限。
2、db:列出数据库,而用户有权限访问它们,在这里指定的权限适用于一个数据库中的所有表。
3、tables_priv:指定表级权限,在这里指定的一个权限适用于一个表的所有列。
4、columns_priv:指定列级权限,这里指定的权限适用于一个表的特定列。
5、procs_priv:指定存储过程权限,这里代表允许使用某个存储过程的权限。
6、proxies_priv:利用MySQL proxies_priv实现类似用户组管理,角色(Role)可以用来批量管理用户,同一个角色下的用户,拥有相同的权限。
权限管理概念
MySQL用户权限管理主要有以下几个作用:
1、限制访问:可以限制用户访问哪些库、哪些表。
2、操作限制:可以限制用户对哪些表执行SELECT、CREATE、DELETE、ALTER等操作。
3、登录限制:可以限制用户登录的IP或域名。
4、权限传递:可以限制用户自己的权限是否可以授权给别的用户。
用户操作MySQL数据库的权限管理,主要分为两个阶段:
1、连接权限:判断用户是否有权连接上来,依据用户的主机(host)、用户名(user)和密码(password)信息,这些信息存储在mysql
库中的user
表中。
2、操作执行权限:检查用户是否有权执行特定操作,涉及user
、db
、tables_priv
、columns_priv
、procs_priv
和proxies_priv
表。
实际操作
在安装完数据库后,只能在本地登录数据库,当进行远程登录时,会提示错误,这时,需要相应地配置,给特定的用户赋予特定的操作权限,MySQL中使用GRANT命令和REVOKE命令来管理用户的权限。
1、创建用户格式:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
举例:创建zhangsan用户,只能本地登录,密码为password。
```sql
CREATE USER 'zhangsan'@'localhost' IDENTIFIED BY 'password';
```
创建lisi用户,密码为password,%通配符表示任何主机都可以连接(可以远程连接)。
```sql
CREATE USER 'lisi'@'%' IDENTIFIED BY 'password';
```
2、授权格式及示例:
授予权限命令的基本格式为:GRANT privilege ON database_object TO user;
授予普通数据用户查询、插入、更新、删除数据库中所有表数据的权限。
```sql
GRANT SELECT, INSERT, UPDATE, DELETE ON database_name.* TO 'common_user'@'%';
```
3、刷新权限:
在任何对用户权限的更新后,务必通过以下命令保存更改:
```sql
FLUSH PRIVILEGES;
```
4、撤销权限:
使用REVOKE命令撤销用户的某些权限,从myuser用户撤销所有权限:
```sql
REVOKE ALL PRIVILEGES FROM myuser;
```
相关问答FAQs
1、如何在MySQL中创建一个新用户并赋予其所有数据库的所有权限?
使用CREATE USER
命令创建新用户,然后使用GRANT ALL PRIVILEGES
命令授予该用户所有数据库的所有权限,使用FLUSH PRIVILEGES
命令使更改生效,具体命令如下:
```sql
CREATE USER 'newuser'@'%' IDENTIFIED BY 'newpassword';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%';
FLUSH PRIVILEGES;
```
2、如何撤销某个用户的特定权限?
使用REVOKE
命令撤销特定用户的特定权限,撤销myuser用户在testdb数据库上的所有权限:
```sql
REVOKE ALL PRIVILEGES ON testdb.* FROM 'myuser';
```