站长资讯网
最全最丰富的资讯网站

一起聊聊mysql中的账户和权限

本篇文章给大家带来了mysql中账户的权限的相关问题,当用户执行任何数据库操作时,服务器将会验证用户是否具有相应的权限,例如查询表需要 SELECT 权限,删除对象需要 DROP 权限。希望对大家有帮助。

一起聊聊mysql中的账户和权限

当客户端连接 MySQL 服务器时,必须提供有效的身份认证,例如用户名和密码。当用户执行任何数据库操作时,服务器将会验证用户是否具有相应的权限,例如查询表需要 SELECT 权限,删除对象需要 DROP 权限。

为了方便用户权限的管理,MySQL 8.0 提供了角色的功能。角色(Role)是一组权限的集合。

一起聊聊mysql中的账户和权限

本篇我们讨论 MySQL 中的账户和权限的管理。

5.1 管理用户

5.1.1 创建用户

MySQL 使用 CREATE USER 语句创建用户,基本语法如下:

CREATE USER [IF NOT EXISTS] account_name IDENTIFIED BY 'password';

其中,account_name 是账户名称;账户名称分为两个部分:用户名(user_name)和主机名(host_name),使用 % 连接。IDENTIFIED BY 用于指定用户的密码。IF NOT EXISTS 用于避免创建重名账户时产生错误信息。

以下语句创建一个新的用户 dev01,它可以从本机登录(localhost):

mysql> CREATE USER dev01@localhost IDENTIFIED BY 'Dev01@mysql'; Query OK, 0 rows affected (0.21 sec)

MySQL 中的账户由用户名和主机名共同决定,主机 office.example.com 上的 dev01 和主机 home.example.com 上的 dev01 是两个账户。如果不指定主机名,表示用户可以从任何主机登录:

user_name user_name@%

% 是通配符,表示任何字符串;另外,_ 表示任意单个字符。

如果用户名或主机名中包含特殊字符,例如空格或者 – ,需要使用引号分别引用这两部分内容:

'user-name'@'host-name'

除了单引号之外,也可以使用反引号(`)或者双引号(")。

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 个用户都是初始化创建的系统用户。

除了基本语法之外,创建用户时还可以指定

赞(0)
分享到: 更多 (0)