连接到已安装的 mysql 数据库

连接到已安装的 mysql 数据库

我已经在应用服务器上安装了 mysql mysql Ver 8.0.23-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))。我的 VPS 上的操作系统是Ubuntu 20.04.1 LTS

为了管理这个数据库,我通过 SSH 本地连接到服务器,然后访问数据库。

但是,诸如 google data studio 之类的服务需要 jdbc url 或数据库主机名。

在此处输入图片描述

我尝试使用我的服务器 IP 作为主机名,然后使用正确的端口、用户名和密码。但是,我得到:

在此处输入图片描述

我认为我的主机名是错误的,因为它位于服务器本地localhost,而不是服务器的 IP。

关于如何连接数据库或找到正确主机名有什么建议吗?

感谢您的回复!

更新

运行ss -nlp我得到:

root@myVPS:~# sudo ss -nlp | grep mysql
u_str   LISTEN   0        70                        /var/run/mysqld/mysqlx.sock 190906736                                               * 0                      users:(("mysqld",pid=1668517,fd=33))                                           
u_str   LISTEN   0        151                       /var/run/mysqld/mysqld.sock 190906739                                               * 0                      users:(("mysqld",pid=1668517,fd=36))                                           
u_dgr   UNCONN   0        0                                                   * 190906575                                               * 12685                  users:(("mysqld",pid=1668517,fd=3))                                            
tcp     LISTEN   0        70                                          127.0.0.1:33060                                             0.0.0.0:*                      users:(("mysqld",pid=1668517,fd=32))                                           
tcp     LISTEN   0        151                                                 *:3306                                                    *:*                      users:(("mysqld",pid=1668517,fd=34))                                           

答案1

(Ubuntu 上的 Mysql?我以为它已经在 repos 中被 Mariadb 取代了)。

您会注意到系统要求您输入用户名和密码。您在 MySQL 中创建了用户名和密码吗?您是否创建了要使用的数据库?这看起来像是一个先有鸡还是先有蛋的问题(确实如此)。您应该首先创建一个数据库和一个访问该数据库的用户。

我相信 MySQL 的默认版本当前使用 so_peer 身份验证,因此您可以使用 mysql cli 工具以 root 身份连接而无需密码:

user@host ~$ sudo mysql
...
mysql > CREATE USER `testuser`@`localhost` IDENTIFIED BY 's3cr3t';
mysql > CREATE USER `testuser`@`%` IDENTIFIED BY 's3cr3t';
mysql > CREATE DATABASE example1;
mysql > GRANT ALL ON example1.* TO `testuser`@`localhost`;
mysql > GRANT ALL ON example1.* TO `testuser`@`%`;
mysql > FLUSH PRIVILEGES;
mysql > quit

在上述上下文中,“%”表示任何 IP 地址。MySQL 为“localhost”赋予了特殊含义。它不描述环回网络接口 - 它表示访问是通过文件系统套接字进行的。这可能会造成很多混乱。

通常,MySQL 配置为监听文件系统套接字,有时监听环回接口。您可以使用以下命令检查这一点(以及 mysql 服务是否正在运行......

user@host ~$ sudo ss-nlp | grep mysql
u_str  LISTEN     0      128    /var/run/mysqld/mysqld.sock 842576                * 0                   users:(("mysqld",pid=16463,fd=20))
tcp    LISTEN     0      128    127.0.0.1:3306                  *:*

在这里我可以看到服务器正在使用 /var/run/mysqld/mysqld.sock 上的文件系统套接字和环回接口上的端口 3306。

您上面显示的对话框显然不适用于文件系统套接字 - 因此您需要使用环回接口。为了连接到网络套接字,您必须告诉 mysql 客户端主机位于“127.0.0.1”,而不是 localhost。

相关内容