我已经在我的应用程序服务器上安装了 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))
(Ubuntu上的Mysql?我认为这已经在repos中被Mariadb替换了)。
您会注意到系统要求您输入用户名和密码。您是否在 MySQL 中创建了一个?您是否创建了要使用的数据库?这看起来像是鸡与蛋的问题(确实如此)。您应该首先创建一个数据库和一个访问它的用户。
我相信 MySQL 的默认构建当前使用 so_peer 身份验证,因此您可以使用 mysql cli 工具以 root 身份连接而无需密码:
在上面的上下文中,'%' 表示任何 IP 地址。MySQL 为 'localhost' 赋予了特殊含义。它没有描述环回网络接口——这意味着访问是通过文件系统套接字进行的。这会引起很多混乱。
通常 MySQL 配置为侦听文件系统套接字,有时还侦听环回接口。你可以检查一下(事实上如果mysql服务正在运行......
在这里,我可以看到服务器正在使用 /var/run/mysqld/mysqld.sock 处的文件系统套接字和环回接口上的端口 3306。
您在上面向我们展示的对话框显然不适合文件系统套接字 - 因此您需要使用环回接口。为了连接到网络套接字,您必须告诉 mysql 客户端主机位于“127.0.0.1”,而不是 localhost。