我在LINODE添加主機,並架設ubuntu 18.04,apache,mariadb,php7.3,phpmyadmin
但我沒辦法在本端127.0.0.1(或透過其他主機)去遠程連線這台主機的MariaDB?
有資料庫的那台 phpMyAdmin的可以正常連線到資料庫
我也有添加使用者
以上是我去的phpmyadmin做的設定
我在終端機的操作
root@localhost:# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 10.1.34-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'xxx';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'xxx';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit;
都有設定密碼了
但是我是開啟本端127.0.0.1
出現錯誤:
我目的是:想讓本端主機能連到該主機的資料庫
但我發現他在自己的主機上連自己的資料庫也會報錯誤:Error: Connection refused
這是資料庫發生了什麼事?
phpmyadmin 可以連到資料庫,但除此之外好像就失靈了?
root@localhost:# netstat -ntlup | grep mysql
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 16162/mysqld
補充01/23:
目前已經實現遠端連線那台資料庫了
就是透過我自己的開發環境(localhost)利用 php 連線 mariadb 使用 host(那台主機IP) + root + 那台主機資料庫密碼 + 要存取的資料庫名稱
參考看看
這篇
我是去 stackoverflow 查的方式,
目前已經實現遠端連線那台資料庫了
就是透過我自己的開發環境(localhost)利用 php 連線 mariadb 使用 host(那台主機IP) + root + 當初設定那台主機資料庫的密碼 + 要存取的資料庫名稱
我是有看到也要設定 root@127.0.0.1 ,看來可能只需要 root@% 就可以
上網搜尋一下 MySql 遠端連線,
這兩個是完全可以通用的,
必須資料庫那台電腦設定,
其他電腦才能夠連進來.
我一直再看我是不是誤會了什麼,還是你誤會了什麼了。
127.0.0.1 這個ip是特殊的ip。它代表的是連結本機。
所以連結本機的意思是。
在a電腦用127.0.0.1。就是連a電腦。
在b電腦用127.0.0.1,就是連b電腦。
127.0.0.1都不會是某一台電腦的ip。它代表的是本機ip。
所以??
127.0.0.1要連遠端,這個.....說真的。我有點傻眼中。
除非你指的是同一台電腦上。這樣是沒問題的。
但你的語意之間又透著好像是要用別台電腦去連另一台電腦的意思。
然後又說用127.0.0.1連結。
說真的,我真希望是我誤會了。
我是要在a電腦(不管是什麼localhost or 127.0.0.1)連線到b電腦的資料庫,透過php
所以我去b電腦的資料庫新增使用者和做一些設定,能讓其他台主機能連過來存取資料庫
那你要先知道你b電腦的ip是什麼
要用他的ip在a電腦上指定連接。
不可能用127.0.0.1去連接的。
當然b電腦那邊的sql資料庫的使用著用戶。你也得開通一個帳號是可以外連的。(一般預設的帳號都是只允許本地端連接)
在這邊,你得先了解一下網路的基本特性才行。
如果設定的是 'root'@'%' 是不是我本機電腦可以連過去?macos
你所謂的本機電腦連過去。還是指用127.0.0.1連過去嗎??
如果是,這樣當然不行了。
因為127.0.0.1並不是你那邊的ip。而是指這台電腦自已的。
你要先清楚這一點才行。不要一直還在那邊127.0.0.1的連結。
你得先找到你的b電腦的對外ip或是內網ip才行。
如果你真的不懂的話。麻煩你先在b電腦啟用cmd。去下達 ipconfig
會出現如下的訊息或是更多的訊息出來。
**Windows IP 設定
乙太網路卡 乙太網路:
連線特定 DNS 尾碼 . . . . . . . . :
連結-本機 IPv6 位址 . . . . . . . : fe80::b4ef:f4a4:123a:abf5%7
IPv4 位址 . . . . . . . . . . . . : 192.168.0.108
子網路遮罩 . . . . . . . . . . . .: 255.255.255.0
預設閘道 . . . . . . . . . . . . .: 192.168.0.1**
其中那個 IPv4 位址 後面的ip,就是你那台電腦可連接的ip。
你在a電腦再改成用這個ip連接就行了。(可不要參照我上面範例的)
另外要注意一件事。不過我想如果機器是你自已的因該是碰不到。
但還是提醒一下。
部份系統或主機設定,會強制root不能外連。就算你改成root@%也是一樣。
所以最好還是另開一個帳號試試。
你上網GOOGLE一下Mysql 開放外部連線,大概就是那樣
grant all privileges on . to 'root'@'%' identified by 'password';
grant all privileges on test.* to 'root'@'%' identified by 'password' with grant option;
flush privileges;