MySQL 是一个多用户的数据库系统,按权限,用户可以分为两种:root 用户,超级管理员,和由 root 用户创建的普通用户。
一、MySQL 创建用户
CREATE USER username IDENTIFIED BY 'password';
1.1查看用户
SELECT USER,HOST FROM USER(该表位于 mysql 库中)
示例
创建一个 u_sxt 的用户,并查看创建是否成功。
select user,host from mysql.user create user u_sxt IDENTIFIED by 'sxt'
1.2分配权限
新用户创建完后是无法登陆的,需要分配权限。
GRANT 权限 ON 数据库.表 TO 用户名@登录主机GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost'
登陆主机:
- % 匹配所有主机
- localhost localhost 不会被解析成 IP 地址,直接通过 UNIXsocket 连接
- 127.0.0.1 会通过 TCP/IP 协议连接,并且只能在本机访问;
- ::1 ::1 就是兼容支持 ipv6 的,表示同 ipv4 的 127.0.0.1
权限列表
- ALTER: 修改表和索引。
- CREATE: 创建数据库和表。
- DELETE: 删除表中已有的记录。
- DROP: 删除数据库和表。
- INDEX: 创建或删除索引。
- INSERT: 向表中插入新行。
- SELECT: 检索表中的记录。
- UPDATE: 修改现存表记录。
- FILE: 读或写服务器上的文件。
- PROCESS: 查看服务器中执行的线程信息或杀死线程。
- RELOAD: 重载授权表或清空日志、主机缓存或表缓存。
- SHUTDOWN: 关闭服务器。
- ALL: 所有权限,ALL PRIVILEGES 同义词。
- USAGE: 特殊的 "无权限" 权限
示例
为 u_sxt 用户分配只能查询 bjsxt 库中的 employees 表,并且只能在本机登陆的权限。
grant select ON bjsxt.employees to 'u_sxt'@'localhost'
1.3刷新权限
每当调整权限后,通常需要执行以下语句刷新权限
FLUSH PRIVILEGES
1.4删除用户
DROP USER username@localhost
示例
删除 u_sxt 用户
drop user 'u_sxt'@'localhost'