MySQL
管理
当我们做项目开发时,可以根据不同的开发人员,赋给他们相应的Mysql
操作权限,因此,我们需要进行用户管理和权限管理。Mysql
数据库的管理人员(root
),根据需要创建不同的用户,赋给相应的权限,供人员使用
用户管理
mysql
中的用户,都存储在系统数据库mysql
中的user
表中,该表中重要的字段说明:
host
:允许登录的”位置“,localhost
表示该用户只允许本机登录,也可以指定ip
地址,如192.168.1.96
user
:用户名authentication_string
:密码,是通过mysql
的password()
函数加密后的密码
创建用户
创建用户的基本语法:create user '用户名'@'允许登录的位置' identified by '密码'
创建用户,同时指定密码
不同的数据库用户,登录到DBMS
后,根据相应的权限,可以操作的数据库和数据对象(表,视图,触发器)都是不同的
在创建用户时,如果不指定Host
(允许登录的位置),则为%
,表示所有的IP
都有连接的权限
可以指定具体的IP
地址:create user 'xxx'@'192.168.1.%'
,表示用户在192.168.1.*
的ip
段中,可以连接到该mysql
登录用户
创建完用户之后,我们可以将其用户名和密码进行数据库的连接登录,登录成功后就可以看到对应数据库的内容了
用户修改密码
- 修改自己的密码:
set password = password('新密码');
- 修改他人的密码(需要有修改用户密码的权限)
set password for '用户名'@'登录位置' = password('新密码');
删除用户
删除用户的基本语法:drop user '用户名'@'允许登录的位置';
在删除用户时,如果Host
不是%
,需要明确指定'用户名'@'允许登录的位置'
权限管理
我们可以通过root
来给其他用户赋予相应的权限,从而进行权限的管理,mysql
中常见的权限有:
权限 | 权限级别 | 权限说明 |
---|---|---|
CREATE | 数据库、表或索引 | 创建数据库、表或索引权限 |
DROP | 数据库或表 | 删除数据库或表权限 |
GRANT OPTION | 数据库、表或保存的程序 | 赋予权限选项 |
REFERENCES | 数据库或表 | 未被实施 |
ALTER | 表 | 更改表,比如添加字段、索引等 |
DELETE | 表 | 删除数据权限 |
INDEX | 表 | 索引权限 |
INSERT | 表 | 插入权限 |
SELECT | 表 | 查询权限 |
UPDATE | 表 | 更新权限 |
CREATE VIEW | 视图 | 创建视图权限 |
SHOW VIEW | 视图 | 查看视图权限 |
ALTER ROUTINE | 存储过程 | 更改存储过程权限 |
CREATE ROUTINE | 存储过程 | 创建存储过程权限 |
EXECUTE | 存储过程 | 执行存储过程权限 |
FILE | 服务器主机上的文件访问 | 文件访问权限 |
CREATE TEMPORARY TABLES | 服务器管理 | 创建临时表权限 |
LOCK TABLES | 服务器管理 | 锁表权限 |
CREATE USER | 服务器管理 | 创建用户权限 |
RELOAD | 服务器管理 | 执行flush-hosts , flush-logs , flush-privileges , flush-status , flush-tables , flush-threads , refresh , reload 等命令的权限 |
PROCESS | 服务器管理 | 查看进程权限 |
REPLICATION CLIENT | 服务器管理 | 复制权限 |
REPLICATION SLAVE | 服务器管理 | 复制权限 |
SHOW DATABASES | 服务器管理 | 查看数据库权限 |
SHUTDOWN | 服务器管理 | 关闭数据库权限 |
SUPER | 服务器管理 | 执行kill线程权限 |
给用户授权
基本语法:grant 权限列表 on 库.对象名 to '用户名'@'登录位置'
如果是创建用户的时候,还需要加上
identified by '密码'
权限列表,多个权限用逗号分开,如:
select, delete, create on ...
将所有的权限赋给用户:
grant all on ...
库.对象名可以使用
*.*
表示本系统中的所有数据库的所有对象(表、视图、存储过程)
库.*
表示某个数据库中的所有数据对象(表、视图、存储过程)
如果权限没有生效,可以执行权限生效指令:FLUSH PRIVILEGES;
回收用户权限
基本语法:revoke 权限列表 on 库.对象名 from '用户名'@'登录位置'