【已解决】在MySQL数据库中,怎么给指定用户访问指定数据库的权限?

  • 作者: 凯哥Java(公众号:凯哥Java)
  • 工作小总结
  • 时间:2024-04-15 13:21
  • 273人已阅读
简介 需求一:我现在使用的是Navicat来操作mysql数据库,我想在mysql创建一个新用户,给这个新用户设置只有对demo_filter库的读写权限。用户名:demo_filter密码:123456怎么设置?解决方案:要在MySQL中创建一个新用户并设置其对特定数据库的读写权限,你可以按照以下步骤操作:登录MySQL:首先,你需要使用root或具有足够权限的用户登录到MySQL。bash复制代码m

🔔🔔好消息!好消息!🔔🔔

 如果您需要注册ChatGPT,想要升级ChatGPT4。凯哥可以代注册ChatGPT账号代升级ChatGPT4

有需要的朋友👉:微信号 kaigejava2022

需求一:

我现在使用的是Navicat来操作mysql数据库,我想在mysql创建一个新用户,给这个新用户设置只有对demo_filter库的读写权限。用户名:demo_filter 密码:123456怎么设置 ?

解决方案:

要在MySQL中创建一个新用户并设置其对特定数据库的读写权限,你可以按照以下步骤操作:

  1. 登录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;
  1. 退出MySQL:

sql

EXIT;

现在,你已经成功创建了一个新用户demo_filter,并为其设置了对demo_filter数据库的读写权限。确保在生产环境中,根据你的实际需求仔细配置权限,并尽量遵循最小权限原则。



需求二:

我现在已经创建了demo_filter用户,但是我不想让demo_filter用户只能localhost访问。我想设置* 。怎么修改

解决方案:

如果你已经创建了demo_filter用户,并且现在想要修改这个用户,使其可以从任何主机访问,你需要更新用户的host部分。你可以通过以下步骤来完成这个操作:

  1. 登录MySQL:

使用root或其他具有足够权限的用户登录到MySQL。

bash

mysql -u root -p
  1. 删除现有的用户记录:

首先,你需要删除现有的demo_filter用户记录,因为MySQL不允许同一个用户名对应多个不同的host。

sql

DROP USER 'demo_filter'@'localhost';

如果demo_filter用户原本是为%设置的,那么你应该删除那个记录:

sql

DROP USER 'demo_filter'@'%';
  1. 重新创建用户并指定为任何主机:

然后,重新创建用户,并指定host为%,这样用户就可以从任何主机连接。

sql

CREATE USER 'demo_filter'@'%' IDENTIFIED BY '123456';
  1. 授予权限:

现在,你需要给用户授予对demo_filter数据库的读写权限。

sql

GRANT ALL PRIVILEGES ON demo_filter.* TO 'demo_filter'@'%';

如果你只想授予读写权限,而不是所有权限,你可以这样写:

sql

GRANT SELECT, INSERT, UPDATE, DELETE ON demo_filter.* TO 'demo_filter'@'%';
  1. 刷新权限:

每次修改权限后,都需要刷新权限。

sql

FLUSH PRIVILEGES;
  1. 退出MySQL:

sql

EXIT;

现在,demo_filter用户就可以从任何主机连接到MySQL服务器,并对demo_filter数据库拥有指定的权限了。

请确保在允许远程连接之前,你的MySQL服务器已经配置了适当的安全措施,例如防火墙规则、强密码策略以及可能的SSL连接加密等。


TopTop