我的MYSQL学习心得(十三)
我的MYSQL学习心得(一)
我的MYSQL学习心得(二)
我的MYSQL学习心得(三)
我的MYSQL学习心得(四)
我的MYSQL学习心得(五)
我的MYSQL学习心得(六)
我的MYSQL学习心得(七)
我的MYSQL学习心得(八)
我的MYSQL学习心得(九)
我的MYSQL学习心得(十)
我的MYSQL学习心得(十二)
这一篇《我的MYSQL学习心得(十三)》将会讲解MYSQL的用户管理
在mysql数据库中,有mysql_install_db脚本初始化权限表,存储权限的表有:
1、user表
2、db表
3、host表
4、table_priv表
5、columns_priv表
6、proc_priv表
MySQL 存取控制包含2个阶段:阶段1 :服务器检查你是否允许连接。
阶段2 :假定你能连接,服务器检查你发出的每个请求。看你是否有足够的权限实施它。例如,如果你从数据库中一个表精选(select)行或从数据库抛弃一个表,服务器确定你对表有 select 权限或对数据库有 drop 权限。
服务器在存取控制的两个阶段使用在 mysql 的数据库中的 user 、 db 和 host 表,在这些授权表中字段如下:表名称 user db host
范围字段 Host Host Host
User Db Db
Password User
权限字段 Select_priv Select_priv Select_priv
Insert_priv Insert_priv Insert_priv
Update_priv Update_priv Update_priv
Delete_priv Delete_priv Delete_priv
Index_priv Index_priv Index_priv
Alter_priv Alter_priv Alter_priv
Create_priv Create_priv Create_priv
Drop_priv Drop_priv Drop_priv
Grant_priv Grant_priv Grant_priv
Reload_priv
Shutdown_priv
Process_priv
File_priv
对存取控制的第二阶段(请求证实),如果请求涉及表,服务器可以另外参考 tables_priv 和 columns_priv 表。这些表的字段如下:表名称 tables_priv columns_priv
范围字段 Host Host
Db Db
User User
Table_name Table_name
Column_name
权限字段 Table_priv Column_priv
Column_priv
其他字段 Timestamp Timestamp
Grantor
每个授权表包含范围字段和权限字段。
user表主要分为:用户列、权限列、安全列、资源控制列
host表主要分为:用户列、权限列
这里美中不足的是 mysql.user 没有一个列是保存用户创建时间的
有时候排查用户问题的时候,比如某个客户在某个时间说连接不上数据库,我们在user表里只能查到是否存在那个用户
但是不知道这个用户的创建时间,也就是说客户说的那个时间究竟用户是否已经创建我们是不知道的
帐户管理
MYSQL提供许多语句用来管理用户帐号,这些语句可以用来包括登录和退出MYSQL服务器、创建用户、删除用户、密码管理、权限管理
MYSQL数据库的安全性,需要通过帐户管理来保证
登录和退出MYSQL
mysql命令的常用参数
-h:主机名或ip,默认是localhost,最好指定-h参数
-u:用户名
-p:密码,注意:该参数后面的字符串和-p不能有空格
-P:端口号,默认为3306
数据库名:可以在命令最后指定数据库名
-e:执行SQL语句,如果指定该参数,将在登录后执行-e后面的命令或sql语句并退出
命令执行完之后返回book表的结构,查询返回之后会自动退出MYSQL
用户CREATE USER user [IDENTIFIED BY [PASSWORD] 'password'][, user [IDENTIFIED BY [PASSWORD] 'password']]
新建普通用户CREATE USER 'jeffrey'@'localhost' identified BY 'mypass';
用户名部分为“jeffrey”,主机名默认为“%”(即对所有主机开放权限)
如果指定用户登录不需要密码,则可以省略identified BY部分
对于使用插件认证连接的用户,服务器调用指