我在本地机器上安装了MySQL社区版5.5,我想允许远程连接,这样我就可以从外部连接。
我怎样才能做到这一点?
这在MySQL上是默认允许的。
默认情况下禁用的是远程`root'访问。 如果你想启用它,在本地运行这个SQL命令。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; FLUSH PRIVILEGES;
然后在你的 "my.cnf "文件中找到下面这一行并**注释出来,在Unix/OSX系统中,该文件通常位于/etc/mysql/my.cnf。在某些情况下,该文件的位置是/etc/mysql/mysql.conf.d/mysqld.cnf)。)
/etc/mysql/my.cnf
如果是Windows系统,你可以在MySQL安装目录中找到它,通常是类似于C:\Program Files\MySQL\MySQL Server 5.5\,文件名是my.ini。
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)以使更改生效。
在做了以上所有操作后,我仍然无法以root远程登录,但Telnet到端口3306确认MySQL正在接受连接。
root
3306
MySQL
我开始查看MySQL中的用户,发现有[多个root用户][1],密码不同。
select user, host, password from mysql.user;
于是在MySQL中,我又[设置了root的所有密码][2],终于可以以root的身份远程登录了。
use mysql; update user set password=PASSWORD('NEWPASSWORD') where User='root'; flush privileges;
[1]: https://serverfault.com/questions/235593/mysql-log-shows-3-root-users-2-without-passwords-why [2]: http://www.cyberciti.biz/faq/mysql-change-root-password/
根据我的经验,你可以在这个路径/etc/mysql/mysql.conf.d/mysqld.cnf下找到配置文件。
/etc/mysql/mysql.conf.d/mysqld.cnf
(我努力了一段时间才找到这个路径)
在我的案例中,我试图在cent操作系统上连接到一个远程mysql服务器。在经历了很多解决方案(授予所有权限,删除ip绑定,启用网络)之后,问题仍然没有得到解决。
结果,在研究各种解决方案时,我遇到了iptables,它使我意识到mysql端口3306不接受连接。
下面是我如何检查和解决这个问题的一个小说明。
telnet(mysql服务器ip)[portNo]
请按照下面提到的步骤来设置MySQL用户的通配符远程访问。
(1)打开cmd. (2)打开cmd; 。 (2)导航到路径C:\Program Files\MySQL\MySQL Server 5.X/bin,并。 运行这个命令。 运行这个命令。 mysql -u root -p。 (3) 输入根密码。 (3)输入根密码。 (3)输入根密码。 (4)执行以下命令,提供权限。 (4)执行以下命令提供权限。 (4) 执行下面的命令来提供权限。 *GRANT ALL PRIVILEGES ON*.\ TO 'USERNAME'@'IP' IDIFIED BY 'PASSWORD'; ;。 USERNAME.你希望连接到MySQL服务器的用户名。 你希望连接到MySQL服务器的用户名。 USERNAME:你希望连接到MySQL服务器的用户名。 IP:你希望连接MySQL服务器的用户名。 IP:你希望允许访问MySQL服务器的公共IP地址。 公共IP地址:你希望允许访问MySQL的地方。 服务器。 服务器。 PASSWORD。 所用用户名的密码。 PASSWORD:使用的用户名的密码。 PASSWORD:使用的用户名的密码。 IP可以用%代替,允许用户从任何IP连接。 地址。 地址。 地址。 >。 (5)按以下命令刷新前置权限并退出。 (5)按以下命令刷新前置权限并退出。 (5)通过以下命令刷新前置权限并退出。 FLUSH PRIVILEGES;。 exit;。 或 q
(1)打开cmd. (2)打开cmd; 。 (2)导航到路径C:\Program Files\MySQL\MySQL Server 5.X/bin,并。
运行这个命令。 运行这个命令。
mysql -u root -p。
(3) 输入根密码。
(3)输入根密码。 (3)输入根密码。 (4)执行以下命令,提供权限。 (4)执行以下命令提供权限。 (4) 执行下面的命令来提供权限。 *GRANT ALL PRIVILEGES ON*.\ TO 'USERNAME'@'IP' IDIFIED BY
'PASSWORD'; ;。
USERNAME.你希望连接到MySQL服务器的用户名。 你希望连接到MySQL服务器的用户名。
USERNAME:你希望连接到MySQL服务器的用户名。 IP:你希望连接MySQL服务器的用户名。 IP:你希望允许访问MySQL服务器的公共IP地址。 公共IP地址:你希望允许访问MySQL的地方。 服务器。 服务器。
PASSWORD。 所用用户名的密码。
PASSWORD:使用的用户名的密码。 PASSWORD:使用的用户名的密码。 IP可以用%代替,允许用户从任何IP连接。 地址。 地址。 地址。 >。 (5)按以下命令刷新前置权限并退出。 (5)按以下命令刷新前置权限并退出。 (5)通过以下命令刷新前置权限并退出。 FLUSH PRIVILEGES;。
PASSWORD:使用的用户名的密码。 PASSWORD:使用的用户名的密码。 IP可以用%代替,允许用户从任何IP连接。 地址。 地址。 地址。 >。 (5)按以下命令刷新前置权限并退出。
(5)按以下命令刷新前置权限并退出。 (5)通过以下命令刷新前置权限并退出。 FLUSH PRIVILEGES;。
exit;。 或 q
[![在此输入图像描述][1]][1]
[1]: https://i.stack.imgur.com/8bD4d.png
如果你从brew安装了MySQL,它确实默认只在本地接口上监听。 要解决这个问题,你需要编辑/usr/local/etc/my.cnf并将bind-address从127.0.0.1改为*。
brew
/usr/local/etc/my.cnf
bind-address
127.0.0.1
*
然后运行brew services restart mysql。
brew services restart mysql
如果你的MySQL服务器进程只监听127.0.0.1或::1,那么你将无法远程连接。如果你在/etc/my.cnf中设置了bind-address,这可能是问题的根源。
/etc/my.cnf
你还必须为一个非 "localhost "的用户添加权限。
只是F.Y.I 我拉我的头发了这个问题几个小时......。 最后,我打电话给我的主机提供商,发现在我的情况下,使用云服务器,在控制面板的1and1,他们有一个二级防火墙,你必须克隆和添加端口3306。 一旦添加,我就直接进入了...
对于需要它的人,如果你的防火墙服务正在运行,请检查防火墙端口3306也是开放的。
这篇博客[如何在局域网上设置MySQL服务器][1]对从头开始设置 "MySQL "很有帮助。
[1]: https://medium.com/@kasunsiyambalapitiya/how-to-setup-a-mysql-server-on-local-area-network-lan-c3c5012c7d6b。
对于OS X的人来说,请注意bind-address参数通常是在launchd plist中设置的,而不是在my.ini文件中。 所以在我的例子中,我从/Library/LaunchDaemons/homebrew.mxcl.mariadb.plist中删除了<string>--bind-address=127.0.0.1</string>。
/Library/LaunchDaemons/homebrew.mxcl.mariadb.plist
<string>--bind-address=127.0.0.1</string>
如果mysqld的绑定地址设置为回环/本地地址(例如:127.0.0.1),则远程主机将无法访问该服务器,因为任何远程主机都无法访问回环接口。 127.0.0.1),服务器将无法从远程主机访问,因为从任何远程主机都无法访问回环接口。
mysqld
将此选项设置为0.0.0.0(::为IPv4+6),以接受来自任何主机的连接,如果你想只允许在一个接口上的连接,则设置为另一个外部可到达的地址。
0.0.0.0
::
来源
有时需要使用Windows上的计算机名称。
第一步)把mysql的配置文件。
mysqld.cnf SET bind-address= 0.0.0.0。
(让recibe连接通过tcp/ip)
第二步)在mysql中建立用户,表用户,用windows上PC的名字属性,不是ip。
[1]: https://i.stack.imgur.com/bXLab.png
这在MySQL上是默认允许的。
默认情况下禁用的是远程`root'访问。 如果你想启用它,在本地运行这个SQL命令。
然后在你的 "my.cnf "文件中找到下面这一行并**注释出来,在Unix/OSX系统中,该文件通常位于
/etc/mysql/my.cnf
。在某些情况下,该文件的位置是/etc/mysql/mysql.conf.d/mysqld.cnf)。)如果是Windows系统,你可以在MySQL安装目录中找到它,通常是类似于
C:\Program Files\MySQL\MySQL Server 5.5\
,文件名是my.ini
。改变行
改为
并重新启动MySQL服务器(Unix/OSX,和Windows)以使更改生效。
在做了以上所有操作后,我仍然无法以
root
远程登录,但Telnet到端口3306
确认MySQL
正在接受连接。我开始查看MySQL中的用户,发现有[多个root用户][1],密码不同。
于是在
MySQL
中,我又[设置了root的所有密码][2],终于可以以root
的身份远程登录了。[1]: https://serverfault.com/questions/235593/mysql-log-shows-3-root-users-2-without-passwords-why [2]: http://www.cyberciti.biz/faq/mysql-change-root-password/
根据我的经验,你可以在这个路径
/etc/mysql/mysql.conf.d/mysqld.cnf
下找到配置文件。(我努力了一段时间才找到这个路径)
在我的案例中,我试图在cent操作系统上连接到一个远程mysql服务器。在经历了很多解决方案(授予所有权限,删除ip绑定,启用网络)之后,问题仍然没有得到解决。
结果,在研究各种解决方案时,我遇到了iptables,它使我意识到mysql端口3306不接受连接。
下面是我如何检查和解决这个问题的一个小说明。
请按照下面提到的步骤来设置MySQL用户的通配符远程访问。
[![在此输入图像描述][1]][1]
[1]: https://i.stack.imgur.com/8bD4d.png
如果你从
brew
安装了MySQL,它确实默认只在本地接口上监听。 要解决这个问题,你需要编辑/usr/local/etc/my.cnf
并将bind-address
从127.0.0.1
改为*
。然后运行
brew services restart mysql
。如果你的MySQL服务器进程只监听127.0.0.1或::1,那么你将无法远程连接。如果你在
/etc/my.cnf
中设置了bind-address
,这可能是问题的根源。你还必须为一个非 "localhost "的用户添加权限。
只是F.Y.I 我拉我的头发了这个问题几个小时......。 最后,我打电话给我的主机提供商,发现在我的情况下,使用云服务器,在控制面板的1and1,他们有一个二级防火墙,你必须克隆和添加端口3306。 一旦添加,我就直接进入了...
对于需要它的人,如果你的防火墙服务正在运行,请检查防火墙端口3306也是开放的。
这篇博客[如何在局域网上设置MySQL服务器][1]对从头开始设置 "MySQL "很有帮助。
[1]: https://medium.com/@kasunsiyambalapitiya/how-to-setup-a-mysql-server-on-local-area-network-lan-c3c5012c7d6b。
对于OS X的人来说,请注意bind-address参数通常是在launchd plist中设置的,而不是在my.ini文件中。 所以在我的例子中,我从
/Library/LaunchDaemons/homebrew.mxcl.mariadb.plist
中删除了<string>--bind-address=127.0.0.1</string>
。如果
mysqld
的绑定地址设置为回环/本地地址(例如:127.0.0.1
),则远程主机将无法访问该服务器,因为任何远程主机都无法访问回环接口。127.0.0.1
),服务器将无法从远程主机访问,因为从任何远程主机都无法访问回环接口。将此选项设置为
0.0.0.0
(::
为IPv4+6),以接受来自任何主机的连接,如果你想只允许在一个接口上的连接,则设置为另一个外部可到达的地址。来源
有时需要使用Windows上的计算机名称。
第一步)把mysql的配置文件。
(让recibe连接通过tcp/ip)
第二步)在mysql中建立用户,表用户,用windows上PC的名字属性,不是ip。
[![在此输入图像描述][1]][1]
[1]: https://i.stack.imgur.com/bXLab.png