我已经在 unbuntu 上设置了一个 mysql 服务器。服务器为我的各种客户托管网站。因此,我希望他们所有人(以及任何新客户端)都可以远程访问 mysql 服务器。我如何配置 mysql 相同?
我知道该GRANT ALL PRIVILEGES
命令,但这需要我单独授予所有用户的远程访问权限。
我强烈建议你不要跑
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';
Run Code Online (Sandbox Code Playgroud)
该用户具有SHUTDOWN权限,可以允许用户远程关闭mysql
mysqladmin -hIP_of_DB Server -uusername -p shutdown
Run Code Online (Sandbox Code Playgroud)
您也不希望将SUPER 特权远程授予任何人。为什么 ?
SUPER 权限使一个帐户可以使用 CHANGE MASTER TO、KILL 或 mysqladmin kill 来杀死属于其他帐户的线程(您始终可以杀死自己的线程)、PURGE BINARY LOGS、使用 SET GLOBAL 修改全局系统变量的配置更改、mysqladmin调试命令,启用或禁用日志记录,即使启用了 read_only 系统变量也执行更新,在从服务器上启动和停止复制,在存储的程序和视图的 DEFINER 属性中指定任何帐户,并使您能够连接(一次)甚至如果达到由 max_connections 系统变量控制的连接限制。
如果您有多个用户并希望他们访问特定的数据库,则需要创建具有数据库级权限的用户。在SHUTDOWN和SUPER权限是不是数据库级的补助金的一部分(见我的文章没有SUPER权限的MySQL用户,为什么)
假设您有一个名为的数据库,mydb
并且您想远程访问它。做这个:
GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'%';
Run Code Online (Sandbox Code Playgroud)
我有一个更好的主意给你。您应该通过他们的网络块来限制远程用户
GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'10.20.%';
GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'10.20.30.%';
GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'10.20.30.40';
Run Code Online (Sandbox Code Playgroud)
请注意,在创建数据库级用户访问权限之前,您必须先删除 'username'@'%'。
请参阅我的帖子MySQL error: Access denied for user 'a'@'localhost' (using password: YES)以获取有关 MySQL 用户身份验证范式的完整说明
创建所需用户后,请确保您的防火墙已打开端口 3306。
归档时间: |
|
查看次数: |
15094 次 |
最近记录: |