MySQL数据库用户管理详解
1、数据库中存储大量的数据,保护数据不受内部和外部的侵害是数据库管理的重要组成部分。MySQL系统提供了一整套保护数据安全的机制,包括角色、用户、权限等方法和手段。本篇主要以CentOS为例,探讨MySQL对登录用户的管理,用户远程连接MySQL数据库时,需要提供连接用户名和登录密码,MySQL对用户名和密码进行验证,只有验证通过的用户才能有权限访问数据库。MySQL安装完成后,已经默认建立了数据库管理员root用户,通过root用户可以建立其他的登录用户,MySQL用户管理主要由查看MySQL用户信息、创建新的用户、删除用户和修改密码组成,下面分别予以讲解。1、查看MySQL用户信息MySQL的用户信息存储在名称为mysql数据库user表中,查看user表结构步骤如下。(1)登录MySQL数据库用SSH客户端连接CentOS服务器,打开终端命令输入窗口,在终端输入窗口输入命令:mysql -uroot –p终端窗口提示输入密码,输入root用户登录密码,如图4-1所示。

3、(3)查看mysql数据库表信息使用show tables命令可以查看mysql数据库表信息,在终端窗口输入命令:show tables;回车执行命令后,终端窗口输出mysql数据库表信息,如图4-3所示。从图4-3可以看出,mysql数据库负责存储MySQL的用户、权限设置、关键字等MySQL自己需要使用的控制和管理信息,其中就包括user表。注意:如果对mysql不是很了解,也不要轻易修改这个数据库里面的表信息。

5、从图4-4可以看出,user表有39个字段,这些字段可以分为四类,分别是用户列、权限列、安全列、资源控制列。● 用户列用户列包括Host、User、锾攒揉敫authentication_string(5.7以前的版本为Password)字段,分别表示主机名、用户名和密码,root用户的信息也存储在这个表中。● 权限列权限列包括Select_priv、Insert_priv等以priv结尾的字段,这些字段的值只有Y和N。Y表示该权限可以用到Host所指数据库上;N表示该权限不能用到Host所指数据库上。● 安全列安全列有四个字段,分别是ssl_type、ssl_cipher、x509_issuer、x509_subject。ssl用于传输加密,x509标准用来标识用户。● 资源列资源控制列也有四个字段,分别说明如下:max_questions:每小时可以执行的查询次数;max_updates:每小时可以执行的数据更新次数;max_connections:每小时可以建立的连接数;max_user_connections:单个用户可以同时具有的连接数。默认值为0,表示无限制。(5)查看user记录可以使用SQL查询命令查询user表中的用户记录,在终端窗口输入命令:select Host,User from user;该查询命令从user表中查找Host,User字段,并返回包含这两个字段的所有记录。如图4-5所示。

7、(2)使用SQL的INSERT命令新建用户可以使用INSERT命令直接将用户的信息添加到mysql.user表。但必须拥有mysql.user表的INSERT权限。在终端窗口输入命令:INSERT INTO mysql.user(Host,User,authentication_string,ssl_cipher,x509_issuer,x509_subject) VALUES('%','test1',PASSWORD('MyNewPass3!'),'','','');执行该命令后,要使用FLUSH PRIVILEGES命令来使用户生效。如图4-7所示。

9、删除MySQL用户MySQL也提供了删除用户的命令,当创建的用户不再被需要时,可以使用DROP USER命令删除用户,使用该命令时,数据库登录用户必须拥有对mysql.user表的DELETE权限。注意: root用户不能被删除。DROP USER的命令格式如下:DROP USER user[,user]...;其中user是需要删除的用户,由用户名(User)和主机名(Host)构成,可以删除多个用户。例如,删除名称为test1的用户,在终端窗口输入命令:DROP USER 'test1'@'%';执行该命令后,用户名称为test1的记录从user表中删除,删除完成后,同样需要执行FLUSH PRIVILEGES才生效。如图4-9所示。
