如何授予用户的远程访问权限到MySQL服务器?
如果我在我的MySQL数据库中做SHOW GRANTS
,
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD 'some_characters' WITH GRANT OPTION
如果我没有弄错, root@localhost
意味着root
用户只能从localhost
访问服务器。 我如何告诉MySQL授予root
权限访问这个mysql服务器从其他机器(在同一个networking)呢?
这将从*.example.com
任何计算机使用相同的密码授予root访问权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%.example.com' IDENTIFIED BY 'some_characters' WITH GRANT OPTION; FLUSH PRIVILEGES;
如果名称parsing不起作用,您也可以通过IP或子网授予访问权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY 'some_characters' WITH GRANT OPTION; FLUSH PRIVILEGES;
MySQL GRANT
语法文档。
尝试:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Pa55w0rd' WITH GRANT OPTION;
你需要采取一些步骤来确保第一个mysql然后root用户可以从外部访问:
-
禁用
my.cnf
skip-networking
(即:my.cnf
) -
检查
my.cnf
中bind-address
值,如果设置为127.0.0.1
,则可以将其更改为0.0.0.0
以允许从所有IP或任何要连接的IP访问。 -
授予远程访问根用户从任何IP(或指定您的IP而不是
%
)GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_root_password' WITH GRANT OPTION; FLUSH PRIVILEGES;`
-
重新启动mysql服务:
sudo service mysql restart
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'YOUR_PASS' WITH GRANT OPTION; FLUSH PRIVILEGES;
*.* = DB.TABLE
可以将用户限制在特定的数据库和特定的表中。
'root'@'%'
你可以用你创build的任何用户来改变root,%是允许所有的IP。 你可以通过改变%.168.1.1等来限制它。
这些SQL授予其他人共享做的工作。 如果您仍然无法访问数据库,则可能只是为端口设置了防火墙限制。 这取决于你的服务器types(以及其间的任何路由器)如何打开连接。 打开TCP端口3306入站,并为外部机器(全部/子网/单个IP /等)提供一个类似的访问规则。
在我的情况下,我试图连接到分OS的远程MySQL服务器。 经过许多解决scheme(授予所有权限,删除IP绑定,启用networking)问题仍然没有得到解决。
事实certificate,在研究各种解决scheme时,我遇到了iptables,这让我意识到mysql端口3306不接受连接。
这里是我如何检查和解决这个问题的小记事。
- 检查端口是否接受连接:
telnet(mysql服务器ip)[portNo]
– 添加ip表规则以允许端口上的连接:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
– 不推荐在生产环境中使用,但是如果你的iptablesconfiguration不当,添加规则可能不能解决问题。 在这种情况下,应该这样做:
服务iptables停止
希望这可以帮助。
这对我有效。 但有一个奇怪的问题,即使我先尝试了那些没有影响的东西。 我更新了phpmyadmin页面,并得到它以某种方式工作。
如果你需要访问local-xampp-mysql。 你可以去xampp-shell – >打开命令提示符。
然后mysql -uroot -p –port = 3306或者mysql -uroot -p(如果有密码设置的话)。 之后,您可以授予这些访问从MySQLshell页面(也可以从本地/ phpmyadmin工作)。
只要添加这些,如果有人发现这个话题,并有初学者的问题。