連接到已安裝的 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))
(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。