将MySQL Workbench连接到我的远程服务器

6
我刚刚下载了MySQL Workbench。
但是我不太明白如何与远程服务器上的数据库同步。
Workbench要求输入“主机名”,所以我提供了我的远程服务器主机名。我指定端口3306。
然后我提供一个用户名。这是我登录PhpAdmin时使用的用户名 - 我应该使用不同的用户名吗?
然后我提供一个密码,再次使用与PhpAdmin相同的密码。
但是这并不起作用。
奇怪的是,错误消息总是告诉我我的用户名是:username@current_network_im_using_to_access_the_internet 但这似乎不正确 - 在phpAdmin中,我的用户名为username@localhost
我不太确定该怎么办。
你能帮我吗?
4个回答

14

MySQL将登录视为特定于其来源主机。您可以在家庭计算机上使用与在服务器本身上使用的密码不同的密码,并且可以针对相同用户名从不同的源主机授予完全不同的权限。

在PHPMyadmin中,数据库运行在与Web服务器相同的服务器上,并因此将自己称为localhost,IP为127.0.0.1。安装了Workbench的计算机必须使用与您的username@localhost不同的凭据访问MySQL。服务器要求您从任何您想要连接的主机授予用户名的访问权限。

在PhpMyAdmin中,您需要授予远程主机访问您的数据库的权限:(有关如何允许来自任何主机的连接,请参见Pekka的答案)

GRANT ALL PRIVILEGES on dbname.* TO yourusername@your_remote_hostname IDENTIFIED BY 'yourpassword';

为了查看您当前在localhost上拥有的所有授权,以便您可以将它们复制到远程主机:

SHOW GRANTS FOR yourusername@localhost;

此外,MySQL服务器需要首先设置为接受远程连接。这并不总是如此,特别是在Web托管平台上。在my.cnf文件中,必须删除或注释掉skip-networking行。如果没有skip-networking行,则必须注释掉该行:

bind-address = 127.0.0.1 

然后重新启动MySQL。


非常有帮助的Michael - 目前,我的服务器不允许我执行你给我的命令。我认为这可能是因为,正如你所说,MySQL服务器没有设置为接受远程连接。然而,我在我的服务器目录中搜索了'my.cnf',但找不到它。你认为我的网站托管公司可能会对我隐瞒这个吗? - Jeff
@Jeff 是的,恐怕您需要联系您的网络托管公司,以了解他们是否允许远程mysql连接。不幸的是,我认为这种情况很少被允许。 - Michael Berkowski
@MichaelBerkowski将 bind-address 注释掉,我看到文档中写道它需要是服务器的 IP 地址,但当 IP 地址不是静态时,我不确定可以做什么。 - eran otzap
我正在使用Ubuntu Server 20.04和MySQL 8.0。在my.cnf文件中找不到任何内容,bind-address=127.0.0.1这一行在mysqld.cnf文件中。 - j.c

1

你的phpMyAdmin似乎在与数据库本身相同的服务器上运行。

因此,它可以使用username@localhost连接到服务器。

您需要通过添加另一个用户username@%%表示“任何主机”)来使mySQL接受来自localhost外部的连接。

请注意,这不是良好的做法-如果您有静态IP,请考虑限制访问该地址。


1
只是一条提醒,请不要忘记检查您的my.cnf文件中的“bind-address”参数,默认情况下,服务器仅接受本地主机的连接。 - sahid

0

如果您计划使用MySQL Workbench远程服务器中管理MySQL数据库和表,则我建议通过SSH连接。按照许多文章和论坛的建议,我尝试了许多其他方法,例如添加绑定地址,使用uname@host添加新用户具有所有特权等,但在我的情况下,所有这些步骤都是浪费时间的,如果您的服务器非常严格,那么这些步骤将很有用。

请按以下步骤操作。

  1. 单击MySQL连接标题旁边的“+”按钮以添加新连接。
  2. 输入连接名称(任何您需要的)。
  3. 选择标准TCP/IP over SSH连接方法。
  4. 输入SSH详细信息,例如主机(IP/域名),用户名和密码。(服务器应启用使用密码授权的SSH)
  5. MySQL主机详细信息,例如主机名(默认为localhost或127.0.0.1),端口(3306),MySQL用户名和密码。
  6. 然后单击测试连接。

0

为了连接到安装在Windows 10上的MySQL Workbench,我发现Shihab撰写并由Dharman编辑的上述帖子对我立即连接非常有用。但是,以下是我连接TCP/IP所做的事情,这对我通过代码连接到MySQL也很有用:

步骤1:更改MyMySQL中的绑定地址 在Ubuntu机器上(我的MySQL Community Server安装在其中),使用Putty,我使用命令“sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf”更改了mysqld.cnf文件。使用箭头键,我向下滚动到带有“bind-address”的行,并将其从“127.0.0.1”更改为“0.0.0.0”。我使用ctrl + x关闭并输入“Y”保存文件。

步骤2:重新启动MySQL服务器 您必须重新启动MySQL服务器。要执行此操作,可以使用命令“sudo service mysql restart”重新启动。如果无法重新启动,请杀死MySQL进程。首先使用“ps ax | grep mysql”查找MySQL的进程ID,然后使用“sudo kill [process_id]”杀死该进程。

步骤三:更改Ubuntu防火墙设置 为了允许外部连接,您应该更改防火墙的设置。我使用UFW(简单防火墙)来更改设置。如果尚未启用,请使用命令“sudo ufw enable”启动UFW。使用命令“sudo ufw status”检查状态。现在,使用命令“sudo ufw allow from [ip_address] to any port 3306”允许从特定IP地址连接到MySql端口3306(默认),或者如果您的IP地址经常更改,则可以允许所有IP地址连接到该端口,使用命令“sudo ufw allow mysql”。

步骤四:在MySQL中创建用户 我在MySQL中创建了一个用户,以避免使用root登录,使用命令“CREATE USER 'user_name'@'your_IP_Address' IDENTIFIED BY 'password';

步骤五:通过MySQL Workbench连接

  1. 点击数据库
  2. 点击连接到数据库
  3. 在连接方法字段中,选择“标准TCP/IP”
  4. 在主机名中,输入您的服务器IP地址
  5. 在服务器端口中,除非您已更改服务器上MySql的端口,否则保持为“3306”
  6. 在用户名中,输入您的服务器用户名
  7. 在密码中,输入您的服务器密码
  8. 点击确定

步骤6:如果您仍然无法连接

在您的服务器上,禁用防火墙并检查是否能够连接。 如果可以连接,请使用命令 "sudo ufw reset" 重置防火墙。(确保将防火墙中所有连接的副本或屏幕截图保存好,您可以使用命令 "sudo ufw status" 获取所有端口)。如果无法连接,请转到步骤9。 现在使用命令 "sudo ufw allow 80"、"sudo ufw allow mysql" 等允许每个以前存在的端口。 使用命令 "sudo ufw disable" 和 "sudo ufw enable" 分别禁用和启用防火墙。 检查是否能够通过工作台连接。 如果仍然无法连接,只需使用命令 "sudo reboot" 重新启动服务器。 完成重新启动后,您应该能够连接到 MySQL 服务器。 如果仍然无法连接,请使用类似 nmap 软件检查所有打开的端口,并查看是否可以看到 3306。如果无法看到该端口,则必须调试防火墙阻止 MySQL 连接的原因。 使用命令 "show grants for 'user_name'@'localhost';" 检查您的 MySQL 特权。如果能够看到特权,则意味着您的 IP 地址不被允许。请尝试使用以下命令根据您的 IP 地址更新授权 "GRANT ALL PRIVILEGES ON database.* TO 'user'@'yourremotehost' IDENTIFIED BY 'newpassword';" 或 GRANT ALL PRIVILEGES ON database.* TO 'user'@'yourremotehost' IDENTIFIED BY 'newpassword';(允许从任何地方连接)。

如果以上步骤无法实现连接,但您仍想通过快速黑客方式连接

高级黑客步骤:通过SSH使用MySQL Workbench登录
  1. 点击数据库
  2. 点击连接到数据库
  3. 在连接方法字段中,选择“通过SSH的标准TCP/IP”
  4. 在SSH主机名中,输入您的服务器IP地址
  5. 在SSH用户名中,输入您的服务器用户名
  6. 在SSH密码中,输入您的服务器密码
  7. 在SSH密钥文件中,不要做任何操作
  8. 在MySQL主机名中,将其保留为“127.0.0.1”
  9. 在服务器端口中,保持不变为“3306”,除非您已更改了服务器上MySQL的端口
  10. 在用户名中,输入您在上一步中创建的MySQL用户名
  11. 在密码中,输入您在上一步中创建的MySQL密码
  12. 点击确定 现在,您应该能够进入您的MySQL Workbench

其他有用的命令:

  1. 检查MySQL是否正在运行:systemctl status mysql
  2. 进入MySQL:sudo mysql -u [用户名] -p(默认用户名为root,密码为空(只需按回车键))
  3. 检查ufw的状态:sudo ufw status
  4. 检查ufw状态编号以删除端口访问:sudo ufw status numbered
  5. 删除ufw端口访问:sudo ufw delete [从上一个命令中要删除的端口号]
  6. 启动MySQL服务:sudo service mysql start
  7. 更新所有软件包:sudo apt update
  8. 卸载MySQL:sudo apt-get remove mysql*
  9. 安装MySQL 步骤1:sudo apt update 步骤2:sudo apt install mysql-server 步骤3:sudo systemctl start mysql.service 步骤4(如果安装过程中出现问题):sudo apt --fix-broken install

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接