grant
命令为特定用户分配访问权限。首先以root身份登录MySQL,然后执行相应的grant
语句,最后用flush privileges
刷新权限设置。在CentOS系统中,MySQL数据库权限的管理是系统管理员的一项重要任务,合理的权限设置可以保障数据库的安全性和数据的完整性,本文将详细介绍如何在CentOS中更改MySQL数据库的权限。
用户权限管理
在MySQL中,用户权限管理是通过GRANT
和REVOKE
语句实现的。GRANT
语句用于为用户分配权限,而REVOKE
语句则用于撤销用户的权限,以下是一些常用的权限:
SELECT
:允许用户查看数据
INSERT
:允许用户插入新的数据行
UPDATE
:允许用户更新现有数据
DELETE
:允许用户删除数据
CREATE
:允许用户创建新的数据库和表
DROP
:允许用户删除数据库和表
INDEX
:允许用户创建或删除索引
ALTER
:允许用户修改表结构
CREATE ROUTINE
:允许用户创建存储过程
ALTER ROUTINE
:允许用户修改存储过程
EXECUTE
:允许用户执行存储过程
CREATE VIEW
:允许用户创建视图
SHOW VIEW
:允许用户查看视图
CREATE TRIGGER
:允许用户创建触发器
ALTER TRIGGER
:允许用户修改触发器
CREATE USER
:允许用户创建新用户
FILE
:允许用户导入和导出数据到文件
更改用户权限
要更改MySQL用户的权限,首先需要登录到MySQL服务器,在命令行中输入以下命令:
mysql u root p
然后输入root用户的密码,可以使用GRANT
和REVOKE
语句来更改用户权限,如果要给用户user1
分配查看、插入和更新database1
数据库的权限,可以使用以下命令:
GRANT SELECT, INSERT, UPDATE ON database1.* TO 'user1'@'localhost';
如果要撤销用户user1
对database1
数据库的插入权限,可以使用以下命令:
REVOKE INSERT ON database1.* FROM 'user1'@'localhost';
更改权限级别
MySQL的权限可以在全局级别、数据库级别、表级别和列级别进行设置,以下是如何在不同级别更改权限的示例:
全局级别:GRANT ALL PRIVILEGES ON *.* TO 'user1'@'localhost';
数据库级别:GRANT SELECT, INSERT, UPDATE ON database1.* TO 'user1'@'localhost';
表级别:GRANT SELECT, INSERT, UPDATE ON database1.table1 TO 'user1'@'localhost';
列级别:GRANT SELECT (column1), INSERT (column2) ON database1.table1 TO 'user1'@'localhost';
刷新权限
更改权限后,需要刷新权限才能使更改生效,可以使用以下命令刷新权限:
FLUSH PRIVILEGES;
FAQs
Q1: 如果忘记了root用户的密码,如何重置?
A1: 要重置root用户的密码,请按照以下步骤操作:
1、停止MySQL服务:sudo systemctl stop mysqld
2、以不检查权限的方式启动MySQL:sudo mysqld_safe skipgranttables &
3、登录到MySQL:mysql u root
4、选择mysql数据库:USE mysql;
5、更新root用户的密码:UPDATE user SET password=PASSWORD('new_password') WHERE user='root';
6、刷新权限:FLUSH PRIVILEGES;
7、退出MySQL:exit;
8、停止并重新启动MySQL服务:sudo systemctl stop mysqld; sudo systemctl start mysqld;
Q2: 如何查看当前用户的权限?
A2: 要查看当前用户的权限,可以使用以下命令:
SHOW GRANTS FOR CURRENT_USER;
下面是一个简化的介绍,描述了在CentOS系统上更改MySQL数据库权限的步骤:
步骤 | 命令 | 说明 |
1. 登录MySQL服务器 | mysql u root p | 使用root用户登录MySQL,将会提示输入密码 |
2. 切换到mysql数据库 | use mysql; | 更改权限前,需要先切换到mysql数据库 |
3. 显示用户权限 | SHOW GRANTS FOR 'username'@'hostname'; | 查看特定用户在特定主机的权限 |
4. 更改用户权限 | GRANT PRIVILEGES ON database_name.table_name TO 'username'@'hostname'; | 授予用户在特定数据库和表上的权限 |
5. 刷新权限 | FLUSH PRIVILEGES; | 使更改立即生效 |
6. 更改用户密码 | SET PASSWORD FOR 'username'@'hostname' = PASSWORD('new_password'); | 更改特定用户的密码 |
7. 退出MySQL | exit; | 退出MySQL命令行 |
8. 重启MySQL服务 | systemctl restart mysqld | 重启MySQL服务使所有更改生效 |
说明:
PRIVILEGES
需要替换为具体的权限类型,如SELECT
,INSERT
,UPDATE
,DELETE
等。
database_name
和table_name
需要替换为具体的数据库和表名称,如果授予所有数据库和表的权限,可以使用*.
。
username
和hostname
需要替换为实际的用户名和主机名。hostname
可以设置为'%'
以允许用户从任何主机连接。
new_password
需要替换为你想设置的新密码。
在执行上述操作时,请确保你具有足够的权限(通常需要以root用户身份登录MySQL),并且注意定期备份你的数据库以防不测。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/706138.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复