我在本地机器上安装了MySQL Community Edition 5.5,并想允许远程连接,以便我可以从外部源连接。
我该如何做到这一点?
我在本地机器上安装了MySQL Community Edition 5.5,并想允许远程连接,以便我可以从外部源连接。
我该如何做到这一点?
MySQL 默认允许这样做。
默认情况下,禁用远程root
访问。如果想要启用它,请在本地运行此 SQL 命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
在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
。
更改行
bind-address = 127.0.0.1
#bind-address = 127.0.0.1
my.cnf
文件却未在其中找到 bind-address
指令的人,请注意,在我的情况下(MySQL 版本 14.14,Ubuntu 16.04.2),该文件的位置为 /etc/mysql/mysql.conf.d/mysqld.cnf
。 - Ash MenonYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY '*****' WITH GRANT OPTION' at line 1
гҖӮжҲ‘иҜҘжҖҺд№ҲеҠһпјҹ е»әи®®жЈҖжҹҘSQLиҜӯжі•жҳҜеҗҰжӯЈзЎ®пјҢзү№еҲ«жҳҜеңЁдёҺзүҲжң¬зӣёе…ізҡ„жүӢеҶҢдёӯжҹҘзңӢдҪҝз”ЁжӯЈзЎ®зҡ„иҜӯжі•гҖӮ - Hà Link在做了以上所有操作后,我仍然无法远程以root
身份登录,但通过Telnet到端口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';
,意思是将名为“root”的用户的身份验证字符串更改为指定的密码,“YOUR_PASSWORD”应替换为所需的密码。 - DalSoft根据我的经验,你可以在这个路径下找到配置文件:/etc/mysql/mysql.conf.d/mysqld.cnf
。
(我曾苦苦寻找这个路径)
sudo find /etc -iname 'mysql*.cnf'
。 - Martin Konecny在我的情况下,我正在尝试连接到CentOS上的远程MySQL服务器。经过尝试很多解决方案(授予所有权限,删除IP绑定,启用网络),问题仍未得到解决。
事实证明,在研究了各种解决方案后,我发现iptables让我意识到mysql端口3306没有接受连接。
以下是关于如何检查和解决此问题的简短说明。
telnet (mysql服务器ip) [端口号]
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
service iptables stop
希望这会有所帮助。
远程登录的所有过程。远程登录默认关闭。您需要手动打开它以便为所有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
现在可以享受远程登录的便利
请按照以下步骤设置MySQL用户的通配符远程访问权限。
(1) 打开命令提示符。
(2) 导航到路径C:\Program Files\MySQL\MySQL Server 5.X\bin并运行以下命令。
mysql -u root -p
(3) 输入root密码。
(4) 执行以下命令以提供权限。
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'IP' IDENTIFIED BY 'PASSWORD';
USERNAME: 您希望连接到MySQL服务器的用户名。
IP: 公共IP地址,您希望允许访问MySQL服务器的地址。
PASSWORD: 使用的用户名的密码。
可以使用%替换IP,以允许用户从任何IP地址连接。
(5) 通过以下命令刷新权限并退出。
FLUSH PRIVILEGES;
exit; 或 \q
在使用 MySQL 作为数据库的 Java 项目 开发中,我曾经遇到过这个挑战。
以下是我是如何解决的:
首先,请确认你的 MySQL 服务器配置允许远程连接。使用你偏爱的文本编辑器打开 MySQL 服务器配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
向下滚动到bind-address行,并确保其要么被注释掉,要么被替换为0.0.0.0
(允许所有远程连接),或者被替换为您想从远程连接的IP地址。
一旦您进行必要的更改,保存并退出配置文件。通过重新启动MySQL服务应用对MySQL配置文件所做的更改:
sudo systemctl restart mysql
接下来,在安装了MySQL的服务器上,登录到MySQL服务器控制台:
mysql -u root -p
输入您的 mysql用户密码
检查用户已经能够访问的 hosts。在我的情况下,用户是root
:
SELECT host FROM mysql.user WHERE user = "root";
+-----------+
| host |
+-----------+
| localhost |
+-----------+
接下来,我运行了以下命令,以授予root
用户对名为my_database
的数据库的远程访问权限:
USE my_database;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'my-password';
注意: %
允许用户从网络上的所有主机进行远程访问。您可以使用命令指定要授予用户访问权限的单个主机的 IP 地址- GRANT ALL PRIVILEGES ON *.* TO 'root'@'Ip-Address' IDENTIFIED BY 'my-password';
之后,我检查了用户现在可以访问的主机。在我的情况下,该用户是 root
:
SELECT host FROM mysql.user WHERE user = "root";
+-----------+
| host |
+-----------+
| % |
| localhost |
+-----------+
最后,您可以使用以下命令尝试从另一个服务器连接到MySQL服务器:
mysql -u username -h mysql-server-ip-address -p
其中,u代表用户,h代表MySQL服务器IP地址,而p则代表密码。因此,在我的情况下,它是:
mysql -u root -h 34.69.261.158 -p
请输入您的MySQL用户密码
根据您的MySQL服务器版本,您应该会得到此输出:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.31 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
资源: 如何允许远程连接到MySQL
就这些。
希望这能帮助到你。
bind-address = 127.0.0.1 =>> #bind-address = 127.0.0.1
更改主机名以便所有设备都能访问它,本地运行此SQL命令:
UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='root';
FLUSH PRIVILEGES;
重启服务:
sudo service mysql restart
打开MySQL端口:
sudo ufw allow 3306
如果你的MySQL服务器进程只侦听127.0.0.1或::1,则无法远程连接。如果在/ etc / my.cnf
中有bind-address
设置,则可能是问题的根源。
您还需要为非localhost
用户添加权限。
127.0.0.1
以外的另一个 IP 上“监听”? - Pacerierbrew
安装了MySQL,则默认情况下它只会监听本地接口。要解决这个问题,您需要编辑/usr/local/etc/my.cnf
文件,并将bind-address
从127.0.0.1
更改为*
。brew services restart mysql
。
sudo mysql_secure_installation
。供参考。 - Alan Dong