在局域网中连接到另一台计算机上的MySQL服务器

23

我在本地网络中的一台计算机上设置了MySQL,如何连接它?

我也在这台计算机上安装了MySQL(我希望使用它来连接数据库)。

我尝试了以下方法,但并没有起作用:

mysql -u user -h 192.168.1.28:3306 -p password
ERROR 2005 (HY000): Unknown MySQL server host '192.168.1.28:3306' (0)

编辑

感谢您的帮助。不管怎样,我在没有使用3306端口的情况下连接成功了,但我现在有另一个问题。MACBOOK是我的客户端计算机的名称。

mysql -u user -ppassword -h 192.168.1.28 
ERROR 1045 (28000): Access denied for user 'user'@'MACBOOK' (using password: YES)

谢谢。


2
如果您有一个新的问题(而身份验证问题与连接问题不同),请再次进行研究,如果您找不到答案(我非常怀疑),请提出一个新的问题。此外,请阅读MySQL的许多初学者介绍之一 - 这应该会立即回答您的问题。 - Markus W Mahlberg
这是一个重复的问题吗:https://dev59.com/UWUq5IYBdhLWcg3wHcz5 因为您需要通过编辑CNF文件来打开MySQL服务器,如此答案所述,以允许外部连接。 - nivs1978
10个回答

25

那是一个非常有用的问题!由于我们需要在集中式数据库上运行应用程序,因此我们应该授予局域网中的计算机访问托管在局域网PC上的特定数据库的权限。以下是解决方案!

  1. 进入MySQL服务器
  2. 键入以下代码以授予其他计算机访问权限:
  3. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root_password';
    
    把以下内容翻译为中文:
  4. 然后输入:
    FLUSH PRIVILEGES;
    

请将 % 替换为您想要授权访问的 IP!


15
允许任何IP地址在全宇宙范围内使用root超级用户是相当危险的。最好创建一个新用户账户,只允许访问相关的数据库,并授予最少限度的权限以执行远程访问所需的操作。 - RiggsFolly
1
这个答案真的很有帮助!正如@RiggsFolly所说,首先创建一个新账户,然后再进行操作。 - user55924
我同意这很危险,但在一个小型家庭办公室的开发机器上这样做是否疯狂? - mlissner
@user3811169 如何在之后取消权限。 - Kasun Siyambalapitiya
ERROR 1133 (42000): Can't find any matching row in the user table - Dmytro

20

可以在MySQL服务器上安装MySQL Workbench的用户

如果您在MySQL服务器PC上使用或拥有MySQL Workbench,则只需点击几下即可完成此操作。仅建议用于开发环境。

  1. 连接到MySQL服务器。

使用MySQL Workbench连接到MySQL服务器

  1. Navigator中找到Users and Privileges选项,然后单击它。

用户和权限 - MySQL Workbench

  1. 选择root用户,并将Limit to Hosts Matching的值更改为%

用户和权限 - MySQL Workbench

  1. 然后点击底部的应用按钮。

这样应该使根用户能够从远程机器访问MySQL服务器。


6

如果你在本地计算机上安装了MySQL,那么就不需要担心机器的IP地址。只需使用localhost:

mysql -u user -p

或者

mysql -hlocalhost -u user -p

如果您无法使用此登录,请查找本地MySQL服务器中存在哪些用户名(user@host)。以下是您需要执行的操作:

  • Step 01) Startup MySQL so that no passwords are require no passwords and denies TCP/IP connections

    service mysql restart --skip-grant-tables --skip-networking
    

    Keep in mind that standard SQL for adding users, granting and revoking privileges are disabled.

  • Step 02) Show users and hosts

    select concat(''',user,'''@''',host,'''') userhost,password from mysql.user;
    
  • Step 03) Check your password to make sure it works

    select user,host from mysql.user where password=password('YourMySQLPassword');
    

    If your password produces no output for this query, you have a bad password.

    If your password produces output for this query, look at the users and hosts. If your host value is '%', your should be able to connect from anywhere. If your host is 'localhost', you should be able to connect locally.

    Make user you have 'root'@'localhost' defined.

    Once you have done what is needed, just restart mysql normally

    service mysql restart
    

    If you are able to connect successfully on the macbook, run this query:

    SELECT USER(),CURRENT_USER();
    

    USER() reports how you attempted to authenticate in MySQL

    CURRENT_USER() reports how you were allowed to authenticate in MySQL

请告诉我们发生了什么!!!

更新 2012-02-13 20:47 EDT

登录远程服务器并重复步骤1-3。

查看是否有任何用户允许远程访问(即mysql.user中的主机为“%”)。 如果没有,则将'user'@'%'添加到mysql.user中。


3
我本地计算机上已安装了MySQL,但我希望连接到另一台电脑上的MySQL。 - revolver

4

Ubuntu 中,请按照以下步骤操作:

  1. 设置绑定地址在 /etc/mysql/mysql.conf.d

    bind-address = 127.0.0.1 更改为 bind-address = 192.24.805.50 # 您的IP

  2. 为远程机器授予权限

    mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'[remoteip]' IDENTIFIED
    BY 'anypassword' WITH GRANT OPTION;
  3. 然后尝试从远程机器连接

    mysql -u root -h 192.24.805.50 -p


4

按照简单的清单操作:

  1. 尝试ping这台机器,命令为ping 192.168.1.2
  2. 确保MySQL运行在指定端口3306上,即未被修改。
  3. 确保其他计算机未阻止该端口的入站连接。如果是,请添加防火墙例外以允许端口3306的连接,并允许入站连接。
  4. 如果可以,请提供连接时显示的确切错误信息。

3
mysql -u user -h 192.168.1.2 -p

这应该足够连接到MySQL服务器了。 请检查192.168.1.2的防火墙,以确认是否启用了远程连接到MySQL服务器。 祝好。

1

连接到任何mysql数据库应该像这样:

$mysql -h 主机名 -P端口号 -u 用户名 -p(然后输入)

然后它会要求输入密码。注意:端口号应该靠近-P,否则会显示错误。确保您知道自己的mysql端口。默认值为3306,并且在这种情况下指定端口是可选的。如果其它端口,则需要使用-P指定端口号,否则会显示错误。

例如:$mysql -h 10.20.40.5 -P3306 -u root -p(然后输入)

Password:My_Db_Password

关于您使用的产品的Gubrish。
mysql>_

注意:如果您正在尝试连接不同位置的数据库,请确保您可以ping通该服务器/计算机。
$ping 10.20.40.5

它应该返回TTL和你收到PONG的时间。

如果它说目标不可达,则无论如何都无法连接到远程mysql。

在这种情况下,请联系您的网络管理员或检查电缆连接是否正确,直到达到目标计算机的末端。或者检查您是否已经启用了LAN / WAN / MAN或Internet / Intranet / Extranet。


0

在IP地址后面不需要指定“:3306”,因为这是MySQL的默认端口。

如果你的MySQL服务器使用的端口不是3306,那么你必须添加“-P [port]”而不是将其添加到IP地址中。

MySQL客户端无法识别“host:port”的语法,你必须使用“-P [port]”。

另外,如果你使用“-p password”,它不会起作用,并且会再次要求输入密码。你必须将密码粘贴到“-p”后面:-ppassword。(但这仍然是一个非常糟糕的习惯,因为任何能够在你的服务器上执行PS命令的人都可以看到明文密码...)


0

实际上,在主机名中不应指定端口。如果端口与默认值不同,Mysql有特殊选项可用于指定端口。

有点这个意思。

mysql --host=192.168.1.2 --port=3306

0
你应该使用这个:
>mysql -u user -h 192.168.1.2 -P 3306 -ppassword

或者这样:

>mysql -u user -h 192.168.1.2 -ppassword

因为3306是默认端口号。

mysql选项


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