Answers:
MySQL默认情况下允许这样做。
默认情况下禁用的是远程root
访问。如果要启用它,请在本地运行此SQL命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
然后找到以下行并将其注释在my.cnf
文件中,该文件通常/etc/mysql/my.cnf
位于Unix / OSX系统上。在某些情况下,文件的位置是/etc/mysql/mysql.conf.d/mysqld.cnf。
如果是Windows系统,则可以在MySQL安装目录中找到它,通常类似C:\Program Files\MySQL\MySQL Server 5.5\
,文件名将为my.ini
。
换线
bind-address = 127.0.0.1
至
#bind-address = 127.0.0.1
然后重新启动MySQL服务器(Unix / OSX和Windows),以使更改生效。
my.cnf
文件但未bind-address
在其中找到指令的人,请注意,在我的情况下(Ubuntu 16.04.2上的MySQL版本14.14),文件的位置为/etc/mysql/mysql.conf.d/mysqld.cnf
完成上述所有操作后,我仍然无法以root
远程身份登录,但是远程登录到端口3306
确认MySQL
正在接受连接。
我开始查看MySQL中的用户,发现有多个root用户使用不同的密码。
select user, host, password from mysql.user;
因此,MySQL
我再次为root设置了所有密码,最终我可以以远程登录root
。
use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;
update user set authentication_string=password('YOUR_PASSWORD') where user='root';
仅根据我的经验,您可以在此路径下找到配置文件/etc/mysql/mysql.conf.d/mysqld.cnf
。
(我花了一段时间寻找这条路)
sudo find /etc -iname 'mysql*.cnf'
就我而言,我试图连接到cent OS上的远程mysql服务器。经过许多解决方案(授予所有特权,删除ip绑定,启用网络连接)之后,问题仍然没有得到解决。
事实证明,在研究各种解决方案时,我遇到了iptables,这使我意识到mysql端口3306不接受连接。
这是有关我如何检查和解决此问题的小注释。
telnet(mysql服务器ip)[portNo]
iptables -A输入-i eth0 -p tcp -m tcp --dport 3306 -j接受
服务iptables停止
希望这可以帮助。
请按照以下提到的步骤设置MySQL用户的通配符远程访问。
(1)打开cmd。
(2)导航到路径C:\ Program Files \ MySQL \ MySQL Server 5.X \ bin并运行此命令。
mysql -u root -p
(3)输入root密码。
(4)执行以下命令以提供许可。
*。*将所有特权授予“用户名” @“ IP”(由“密码”标识);
USERNAME:您希望连接到MySQL服务器的用户名。
IP:您希望允许访问MySQL服务器的公共IP地址。
密码:使用的用户名的密码。
IP可以替换为%,以允许用户从任何IP地址进行连接。
(5)按照以下命令清除特权并退出。
冲洗特权;
出口; 或\ q
如果您的MySQL服务器进程仅在127.0.0.1或:: 1上侦听,则您将无法远程连接。如果您有此bind-address
设置,/etc/my.cnf
则可能是问题的根源。
您还必须为非localhost
用户添加特权。
127.0.0.1
?
如果您从中安装MySQL,brew
则默认情况下实际上仅在本地接口上进行监听。要解决此问题,您需要编辑/usr/local/etc/my.cnf
并将其bind-address
从更改127.0.0.1
为*
。
然后运行brew services restart mysql
。
远程登录的所有过程。默认情况下,远程登录是关闭的。您需要手动打开所有ip ..才能访问所有ip
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
特定IP
GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_desire_ip' IDENTIFIED BY 'password';
然后
flush privileges;
您可以检查您的用户主机和密码
SELECT host,user,authentication_string FROM mysql.user;
现在你的职责是改变这个
bind-address = 127.0.0.1
你可以在找到
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
如果在那儿找不到这个,那就试试看
sudo nano /etc/mysql/my.cnf
在此发表评论
#bind-address = 127.0.0.1
然后重启Mysql
sudo service mysql restart
现在享受远程登录
对于OS X人士,请注意,bind-address参数通常在启动的plist中设置,而不是在my.ini文件中设置。因此,就我而言,我从中删除<string>--bind-address=127.0.0.1</string>
了/Library/LaunchDaemons/homebrew.mxcl.mariadb.plist
。
~/Library/LaunchAgents
启用远程根访问可能很危险。如果您要设置具有更多限制性权限的用户帐户,那将是更好的选择。下面的三个步骤应该做到这一点。
确保bind-address ...
以my.ini或my.cnf文件开头的行至少被注释掉。如果不存在,请继续。您可以C:\ProgramData\MySQL\MySQL Server 8.0
在Windows上找到该文件。
然后,localhost
在“主机匹配限制”字段中检查与您建立连接的用户帐户是否没有。虽然不建议这样做,但您可以将其%
放在该字段中以进行测试。您可以通过使用MySQL Workbench打开与服务器的本地连接,然后从菜单栏中转到“服务器”>“用户和特权”并找到您要连接的用户帐户来执行此操作。
“限制主机匹配”字段是不允许您进行非本地连接的字段。即,它将接受的连接限制为IP地址的模式。理想情况下,您应该从静态IP地址或子网访问MySQL服务器,以便尽可能地限制自己。