【已解决】在MySQL数据库中,怎么给指定用户访问指定数据库的权限?
- 工作小总结
- 时间:2024-04-15 13:21
- 1212人已阅读
🔔🔔🔔好消息!好消息!🔔🔔🔔
有需要的朋友👉:联系凯哥
需求一:
我现在使用的是Navicat来操作mysql数据库,我想在mysql创建一个新用户,给这个新用户设置只有对demo_filter库的读写权限。用户名:demo_filter 密码:123456怎么设置 ?
解决方案:
要在MySQL中创建一个新用户并设置其对特定数据库的读写权限,你可以按照以下步骤操作:
登录MySQL:
首先,你需要使用root或具有足够权限的用户登录到MySQL。
bash复制代码
mysql -u root -p
输入密码后,你应该会进入MySQL的命令行界面。
2. 创建新用户:
使用CREATE USER
语句来创建新用户。
sql复制代码
CREATE USER 'demo_filter'@'localhost' IDENTIFIED BY '123456';
这里,demo_filter
是用户名,localhost
意味着这个用户只能从本地登录。如果你希望用户可以从任何主机登录,可以使用%
代替localhost
。
3. 授予权限:
使用GRANT
语句给新用户授予对demo_filter
数据库的读写权限。
sql复制代码
GRANT ALL PRIVILEGES ON demo_filter.* TO 'demo_filter'@'localhost';
这将授予用户对demo_filter
数据库的所有权限。如果你只想授予读写权限,可以使用SELECT, INSERT, UPDATE, DELETE
代替ALL PRIVILEGES
。
4. 刷新权限:
每次修改权限后,都需要刷新权限,以确保更改立即生效。
sql
FLUSH PRIVILEGES;
退出MySQL:
sql
EXIT;
现在,你已经成功创建了一个新用户demo_filter
,并为其设置了对demo_filter
数据库的读写权限。确保在生产环境中,根据你的实际需求仔细配置权限,并尽量遵循最小权限原则。
需求二:
我现在已经创建了demo_filter用户,但是我不想让demo_filter用户只能localhost访问。我想设置* 。怎么修改
解决方案:
如果你已经创建了demo_filter
用户,并且现在想要修改这个用户,使其可以从任何主机访问,你需要更新用户的host部分。你可以通过以下步骤来完成这个操作:
登录MySQL:
使用root或其他具有足够权限的用户登录到MySQL。
bash
mysql -u root -p
删除现有的用户记录:
首先,你需要删除现有的demo_filter
用户记录,因为MySQL不允许同一个用户名对应多个不同的host。
sql
DROP USER 'demo_filter'@'localhost';
如果demo_filter
用户原本是为%
设置的,那么你应该删除那个记录:
sql
DROP USER 'demo_filter'@'%';
重新创建用户并指定为任何主机:
然后,重新创建用户,并指定host为%
,这样用户就可以从任何主机连接。
sql
CREATE USER 'demo_filter'@'%' IDENTIFIED BY '123456';
授予权限:
现在,你需要给用户授予对demo_filter
数据库的读写权限。
sql
GRANT ALL PRIVILEGES ON demo_filter.* TO 'demo_filter'@'%';
如果你只想授予读写权限,而不是所有权限,你可以这样写:
sql
GRANT SELECT, INSERT, UPDATE, DELETE ON demo_filter.* TO 'demo_filter'@'%';
刷新权限:
每次修改权限后,都需要刷新权限。
sql
FLUSH PRIVILEGES;
退出MySQL:
sql
EXIT;
现在,demo_filter
用户就可以从任何主机连接到MySQL服务器,并对demo_filter
数据库拥有指定的权限了。
请确保在允许远程连接之前,你的MySQL服务器已经配置了适当的安全措施,例如防火墙规则、强密码策略以及可能的SSL连接加密等。