【问题标题】:connecting to mysql server on another PC in LAN连接到局域网中另一台PC上的mysql服务器
【发布时间】:2012-02-13 08:27:47
【问题描述】:

我在本地网络的 PC 上安装了 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)

谢谢。

【问题讨论】:

  • 如果您有一个新问题(身份验证问题与连接问题不同),请再次研究,如果您没有找到答案(我非常怀疑),请提出一个新问题。另外,请阅读 MySQL 的众多初学者介绍之一——它应该会立即回答您的问题。
  • 这是否与此重复:stackoverflow.com/questions/14779104/… 因为您需要通过编辑 CNF 文件向外部打开 MySQL 服务器,如本答案所述。

标签: mysql


【解决方案1】:

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

  1. 转到 MySQL 服务器
  2. 键入以下代码以授予其他电脑的访问权限:
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root_password';
    
  3. 然后键入:
    FLUSH PRIVILEGES;
    

% 替换为您要授予访问权限的 IP!

【讨论】:

  • 允许root 超级用户从宇宙中的任何 IP 使用是相当危险的。最好创建一个新用户帐户,该帐户只能访问相关数据库,并且只有最低权限来执行远程访问所需的操作。
  • 这个答案真的很有帮助!是的,正如@RiggsFolly 所说,先创建一个新帐户,然后再做。
  • 我同意这很危险,但是在小型家庭办公室的开发机器上这样做是不是很疯狂?
  • @user3811169 如何解除病房后的权限
  • ERROR 1133 (42000): Can't find any matching row in the user table
【解决方案2】:

可以在MySQL Server机器上安装MySQL Workbench的用户

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

  1. 连接到 MySQL 服务器

  1. Navigator找到这个选项Users and Privileges并点击它。

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

  1. 点击底部Apply

这应该允许 root 用户从远程机器访问 MySQL 服务器。

【讨论】:

    【解决方案3】:

    由于您的本地计算机上有 MySQL,因此您无需担心机器的 IP 地址。只需使用本地主机:

    mysql -u user -p
    

    mysql -hlocalhost -u user -p
    

    如果您无法使用此登录,则必须找出本地 MySQL 服务器中存在哪些用户名 (user@host)。这是你要做的:

    • 步骤 01) 启动 MySQL 以便不需要密码并拒绝 TCP/IP 连接

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

      请记住,用于添加用户、授予和 撤销权限被禁用。

    • 步骤 02) 显示用户和主机

      select concat(''',user,'''@''',host,'''') userhost,password from mysql.user;
      
    • 步骤 03) 检查您的密码以确保其有效

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

      如果您的密码对此查询没有产生任何输出,则说明您的密码不正确 密码。

      如果您的密码为此查询产生输出,请查看用户 和主机。如果您的主机值为 '%',您应该能够连接 从任何地方。如果你的主机是'localhost',你应该能够 本地连接。

      让用户定义为“root'@'localhost”。

      完成需要的操作后,正常重启mysql即可

      service mysql restart
      

      如果你能在macbook上连接成功,运行这个 查询:

      SELECT USER(),CURRENT_USER();
      

      USER() 报告您如何尝试在 MySQL 中进行身份验证

      CURRENT_USER() 报告您是如何被允许在 MySQL

    让我们知道发生了什么!!!

    更新 2012-02-13 20:47 EDT

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

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

    【讨论】:

    • 我的 localhost 中确实有 mysql,但我想连接到另一台 PC 上的 mysql。
    【解决方案4】:

    遵循一个简单的清单:

    1. 尝试ping机器ping 192.168.1.2
    2. 确保 MySQL 正在指定端口 3306 上运行,即它没有被修改。
    3. 确保另一台 PC 没有阻止该端口上的入站连接。如果是,请添加防火墙例外以允许端口 3306 上的连接,并允许一般入站连接。
    4. 如果您可以发布您尝试建立该连接时显示的确切错误,那就太好了。

    【讨论】:

      【解决方案5】:
      mysql -u user -h 192.168.1.2 -p
      

      这应该足以连接到 MySQL 服务器。 请检查192.168.1.2的防火墙是否开启远程连接MySQL服务器。

      问候

      【讨论】:

        【解决方案6】:

        Ubuntu 中执行以下步骤:

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

          bind-address = 127.0.0.1 更改为bind-address = 192.24.805.50 # your 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

        【讨论】:

          【解决方案7】:

          连接任何mysql数据库应该是这样的:

          $mysql -h hostname -Pportnumber -u username -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
          

          它应该随着您返回 PONG 的时间返回 TTL。 如果它说目的地不可达,那么无论如何你都无法连接到远程mysql。

          在这种情况下,请联系您的网络管理员或检查与您的计算机的电缆连接,直到您的目标计算机结束。或者检查您的 LAN/WAN/MAN 或 Internet/Intranet/Extranet 是否正常工作。

          【讨论】:

            【解决方案8】:

            实际上你不应该在主机名中指定端口。 Mysql 有特殊的端口选项(如果端口与默认值不同)

            一种

            mysql --host=192.168.1.2 --port=3306
            

            【讨论】:

              【解决方案9】:

              你不必在 IP 后面指定 ':3306',它是 MySQL 的默认端口。

              如果您的 MySQL 服务器使用 3306 以外的其他端口运行,那么您必须添加 '-P [port]' 而不是将其添加到 IP 地址。

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

              顺便说一句,如果您使用“-p 密码”,它将不起作用,并且会再次询问您的密码。您必须将密码粘贴到 -p :-ppassword。 (不过,这是一个非常糟糕的习惯,因为任何可以在您的服务器上进行 PS 的人都可以看到纯密码......)

              【讨论】:

                【解决方案10】:

                你应该使用这个:

                >mysql -u user -h 192.168.1.2 -P 3306 -ppassword
                

                或者这个:

                >mysql -u user -h 192.168.1.2 -ppassword
                

                ...因为 3306 是默认端口号。

                mysql Options

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2019-08-19
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-10-31
                  • 2016-09-25
                  • 2023-03-23
                  • 1970-01-01
                  相关资源
                  最近更新 更多