Mysql 用户及权限说明
Mysql数据库用户相关信息
本文章主要对Mysql数据库系统用户相关信息进行整理;其中从用户名称,用户校验到用户权限控制逐步推进说明;
mysql账户名称组成
MySQL帐户名称由用户名和主机名组成。MySQL在识别您权限时会考虑您的主机名和用户名;相同用户名在不同的客户主机链接到数据库时;会存在不同的权限。所以在对用户权限考量的时候需要加上用户主机信息;
官方描述:MySQL considers both your host name and user name in identifying you because there is no reason to assume that a given user name belongs to the same person on all hosts.
权限查看方法
SHOW GRANTS FOR ‘用户名’@‘主机地址’;
// ‘%’ 表示全部主机
例:SHOW GRANTS FOR 'mysql'@'%';
// ‘ALL PRIVILEGES’ 表示所有权限
结果:GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'%'
mysql用户名与密码
虽然同一个用户名在不同主机可能存在不同的权限;但是用户名-host对应的密码信息是全局的;密码全局适用于帐户。你不能将密码与数据库、表等特定对象相关联。
用户名和主机名合法性
如果用户名或主机名中存在特殊字符;如:如‘空格’或‘-’ 时;需要对其添加引号,例如:‘test-user’@‘%.com’。引号部分需求将用户名与主机名区分,不能放在一起;错误示范:‘test-user@%.com’
mysql密码编码注意事项
如果用户名和密码仅包含ASCII字符,则无论字符集设置如何,都可以连接到服务器。 因为其他所有字符集 基本都是兼容ASCII字符;所以密码中仅包含ASCII字符时;可以不考虑密码字符的编码问题。
mysql用户权限数据结构
mysql默认有一个名为 【mysql】 的数据库;里边包含系统的授权信息表。其中 user 表是用户信息及授权信息;其中主要字段有 Host:主机名,User:用户名称(对应于上边mysql账户名称组成部分)。剩余字段主要为【用户授权类型,安全和资源相关部分】。
类型 | 字段 |
---|---|
Host | |
User | |
Privilege columns部分 | Select_priv |
Insert_priv | |
Update_priv | |
Delete_priv | |
Create_priv | |
Drop_priv | |
Reload_priv | |