当客户端连接 MySQL 服务器时,必须提供有效的身份认证,例如用户名和密码。当用户执行任何数据库操作时,服务器将会验证用户是否具有相应的权限,例如查询表需要 SELECT 权限,删除对象需要 DROP 权限。
MySQL 使用 CREATE USER 语句创建用户,基本语法如下:
CREATE USER [IF NOT EXISTS] account_name
IDENTIFIED BY 'password';
其中,account_name 是账户名称;账户名称分为两个部分:用户名(user_name)和主机名(host_name),使用 % 连接。IDENTIFIED BY 用于指定用户的密码。IF NOT EXISTS 用于避免创建重名账户时产生错误信息。
MySQL 中的账户信息存储在系统数据库 mysql 的 user 表中:
mysql> select host, user from mysql.user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | dev01 |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
5 rows in set (0.00 sec)
除了 dev01@localhost 之外,其他 4 个用户都是初始化创建的系统用户。
除了基本语法之外,创建用户时还可以指定更多选项:
resource_option: {
MAX_QUERIES_PER_HOUR count
| MAX_UPDATES_PER_HOUR count
| MAX_CONNECTIONS_PER_HOUR count
| MAX_USER_CONNECTIONS count
}
resource_option 用于限制该用户对系统资源的使用:
MAX_QUERIES_PER_HOUR,每小时允许执行的查询次数。默认为 0 ,表示没有限制;
MAX_UPDATES_PER_HOUR,每小时允许执行的更新次数。默认为 0 ,表示没有限制;
MAX_CONNECTIONS_PER_HOUR,每小时允许执行的连接次数。默认为 0 ,表示没有限制;
MAX_USER_CONNECTIONS,该用户并发连接的数量。默认为 0 ,表示没有限制;此时用户的并发连接数由系统变量 max_user_connections 决定。
大型站长资讯类网站! https://www.nzzz.com.cn