MySQL用户管理全面解析
1、 数据库需防范内外威胁,保障数据安全是管理关键。MySQL 提供完善的防护机制,通过角色、用户和权限等多种方式,有效控制访问行为,确保数据的机密性与完整性,防止未授权操作对系统造成损害。
2、 本文以CentOS系统为例,介绍MySQL中对登录用户的管理机制。当用户远程连接数据库时,必须提供用户名和密码,系统会对其进行身份验证,只有通过验证的用户才能访问数据库资源。MySQL在安装完成后会自动生成一个默认的管理员账户root,利用该账户可创建其他普通用户。用户管理主要包括查看现有用户信息、新增用户账号、删除不再需要的用户以及修改用户密码等操作。接下来将逐一介绍这些管理功能的具体实现方法,帮助用户更好地控制数据库访问权限,保障数据安全与系统稳定运行。
3、 查询MySQL用户信息
4、 MySQL用户信息保存在名为mysql的数据库user表里,查看该表结构可按以下步骤进行操作。
5、 进入MySQL数据库系统
6、 通过SSH客户端连接CentOS服务器,进入终端后,在命令行界面中输入相应指令即可执行操作。
7、 在终端窗口根据提示输入root用户的登录密码,具体操作4-1所示。
8、 启动MySQL数据库服务
9、 在终端中输入use命令,即可连接并打开MySQL数据库。
10、 执行回车命令后,终端显示Database changed,表明MySQL数据库已成功打开,具体界面4-2所示。
11、 查看MySQL数据库中的表结构信息
12、 在终端中执行show tables命令,可查看MySQL数据库中的所有表信息。
13、 执行命令后,终端窗口显示MySQL数据库的表信息,4-3所示。从中可见,该数据库用于存储MySQL运行所需的各类管理数据,包括用户信息、权限配置和关键字等内容,其中user表便是用于保存用户账户与权限设置的重要组成部分。
14、 若不熟悉MySQL,切勿随意更改数据库中的表结构,以免造成数据错误或系统异常。
15、 查看用户表的结构信息
16、 在终端输入desc命令即可查看表结构信息。
17、 按下回车执行命令后,终端显示user表的结构信息,具体4-4所示。
18、 4-4所示,user表包含39个字段,可划分为用户信息、权限设置、安全配置和资源控制四类。
19、 用户列表
20、 用户列表包含主机名、用户名和密码字段,对应Host、User和authentication_string(5.7版本前为Password),用于标识和验证用户身份,其中root用户的账户信息同样保存在此表内,是系统权限管理的重要组成部分。
21、 权限列表
22、 权限列包含以priv结尾的字段,如Select_priv、Insert_priv等,其取值仅为Y或N。Y代表具备在对应Host数据库上执行该操作的权限,N则表示无此权限。这些字段用于控制用户在指定数据库上的具体操作能力,是权限管理的重要组成部分。
23、 安全防线
24、 安全列表包含四个字段:ssl_type、ssl_cipher、x509_issuer 和 x509_subject。其中,ssl 相关字段用于数据传输加密,x509 字段遵循国际标准,用于验证和标识用户身份,确保通信安全与可信。
25、 资源列表
26、 资源控制列包含四个字段,具体说明如下:
27、 每小时允许执行的查询数量上限。
28、 max_updates:每小时允许进行的数据修改操作的最大次数。
29、 max_connections:表示每小时允许建立的最大连接次数。
30、 单个用户可建立的并发连接数量,默认为0,代表不受限制。
31、 查阅用户历史记录
32、 在终端中输入SQL查询命令,可获取user表里的用户信息记录。
33、 该命令用于从user表中检索Host和User字段,并显示包含这两个字段的全部数据记录,具体结果4-5所示。
34、 4-5所示,user用户表中包含4条记录,其中root用户对应两条。一条记录的Host字段值为%,表示允许来自任意主机的客户端远程连接MySQL服务器;另一条记录的Host字段值为localhost,仅允许本地主机访问,禁止远程连接。这两种配置共同决定了root用户的登录来源和连接权限,体现了MySQL对用户访问控制的精细化管理机制。
35、 新建MySQL用户账号
36、 MySQL默认的root用户权限最高,出于安全考虑,远程连接时应创建新用户,避免直接使用root账户进行操作。
37、 MySQL中创建用户共有三种方法,可通过不同语句实现。
38、 通过CREATE USER命令可新建数据库用户账户。
39、 通过SQL的INSERT语句直接向mysql.user表添加一条新的用户记录。
40、 通过GRANT语句创建新用户。
41、 通过CREATE USER语句来建立新用户账户
42、 创建用户需使用CREATE USER命令,执行者必须具备相应权限,其中root用户默认拥有全部权限。该命令的基本格式如下:
43、 user参数用于指定新创建用户的名称,由用户名和主机名组成;通过IDENTIFIED BY关键字可为该用户设置登录密码。
44、 在终端中输入命令,创建用户名为test、密码为MyNewPass2!的新用户。
45、 执行命令后,user表将新增一条记录,权限初始均为N,4-6所示。
46、 通过SQL的INSERT语句添加新用户记录。
47、 可通过执行INSERT命令将用户信息直接写入mysql.user表,但需具备该表的插入权限。在终端中输入相应命令即可完成操作。
48、 执行命令后需运行FLUSH PRIVILEGES以使用户设置生效,具体操作4-7所示。
49、 通过GRANT命令创建新用户并授予权限
50、 通过GRANT命令创建用户时,可同时授予相应权限,其语法格式如下所示:
51、 该命令用于批量创建用户,其中 user 指定用户名及主机来源,由用户名和主机名组成;IDENTIFIED BY 用于设定登录密码,password 为对应口令;priv_type 定义用户的操作权限类型;database.table 则限定权限作用的数据库和表范围,整体实现对新用户访问权限的全面配置。
52、 例如,在终端中输入命令:创建一个名为test3、密码为MyNewPass4!的新用户,授予其对所有数据库的SELECT权限,并允许远程连接。
53、 执行命令后,user表新增一条用户数据,具体4-8所示。
54、 移除MySQL中的用户账号
55、 当不再需要某个用户时,可通过DROP USER命令将其删除。执行该操作要求当前登录用户具备对mysql.user表的DELETE权限。MySQL提供了这一功能,便于管理数据库用户,确保系统安全与资源合理分配。
56、 请注意,root用户无法被删除。
57、 删除用户的命令格式如下所示:
58、 可删除一个或多个用户,每个用户由用户名和主机名共同确定。
59、 在终端中输入命令以删除名为test1的用户。
60、 执行命令后,user表中用户名为test1的记录将被删除,删除操作完成后需执行FLUSH PRIVILEGES命令才能使更改生效,具体效果4-9所示。
61、 更改用户登录密码
62、 为保障数据库安全,应定期更新登录用户密码,可通过系统命令、管理工具或脚本等多种方式实现密码修改。
63、 通过mysqladmin命令可修改数据库用户密码。
64、 通过SQL的UPDATE语句更新user表中指定用户的密码字段。
65、 通过SET命令更改账户登录口令
66、 通过GRANT语句可更改用户的登录密码。
67、 通过mysqladmin工具可更改数据库用户密码。
68、 mysqladmin是MySQL官方推出的命令行工具,通过在终端输入相应参数,可完成修改用户密码、停止数据库服务、查看服务器运行状态等管理任务,操作便捷,适用于日常维护与监控需求。
69、 例如,将root用户的密码从MyNewPass1!更改为MyNewPass6!,可在终端中执行相应的密码修改命令来完成操作。
70、 执行命令后,root用户密码已更改为MyNewPass6!。
71、 通过SQL的UPDATE语句更新user表中指定用户的密码字段。
72、 通过SQL的UPDATE语句,可直接更新user表中authentication_string字段的值,从而实现密码修改。
73、 在终端中输入命令,将user表中test用户的密码修改为TestNew1!。
74、 执行命令后,test用户的密码已更改为TestNew1!,具体结果4-10所示。
75、 通过SET命令更改用户登录密码
76、 登录MySQL时使用root账户,可通过SET PASSWORD命令修改密码。在终端中输入相应指令,即可直接更改root用户的登录密码,操作简便,适用于需要更新数据库账户安全凭证的场景。
77、 在终端中输入指定命令即可修改他人密码。
78、 通过GRANT语句可更改用户登录密码。
79、 通过GRANT语句修改普通用户密码时,需具备GRANT权限,其命令格式如下所示:
80、 用户由用户名与主机名组成,IDENTIFIED BY 后面紧跟密码信息。
81、 将用户名为test的密码更改为MyNewPass2!,可在终端中执行相应命令实现。
82、 执行命令后,test用户的密码已更改为MyNewPass2!。
评论
更多评论