iT邦幫忙

0

如何設定 mariadb 能遠端連線?

  • 分享至 

  • xImage

我在LINODE添加主機,並架設ubuntu 18.04,apache,mariadb,php7.3,phpmyadmin

但我沒辦法在本端127.0.0.1(或透過其他主機)去遠程連線這台主機的MariaDB?

有資料庫的那台 phpMyAdmin的可以正常連線到資料庫
我也有添加使用者

https://imgur.com/2docWew

以上是我去的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
出現錯誤:

https://imgur.com/uDcplZQ

我目的是:想讓本端主機能連到該主機的資料庫
但我發現他在自己的主機上連自己的資料庫也會報錯誤: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 + 那台主機資料庫密碼 + 要存取的資料庫名稱

看更多先前的討論...收起先前的討論...
Justin iT邦新手 5 級 ‧ 2019-01-22 12:44:36 檢舉
所以你在自己電腦上打127.0.0.1去連@@?有測試PORT有開嗎?
你有查過 DB 的設定嗎?
預設應該是禁止網路連線的
https://mariadb.com/kb/en/library/configuring-mariadb-for-remote-client-access/
火爆浪子 iT邦研究生 1 級 ‧ 2019-01-22 13:05:34 檢舉
我另一台就是這樣運行的,只是當初忘記把方法記下來⋯
就是我有一台LINODE,安裝了資料庫和phpmyadmin
我可以在本端 localhost 連 IP + 資料庫密碼+資料表連到到該LINODE的資料庫
火爆浪子 iT邦研究生 1 級 ‧ 2019-01-22 13:07:20 檢舉
我有看資料庫那台 port 是要 3306,有開,anywhere
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
海綿寶寶
iT邦大神 1 級 ‧ 2019-01-23 08:47:11
最佳解答

參考看看
這篇

火爆浪子 iT邦研究生 1 級 ‧ 2019-01-23 18:29:56 檢舉

我是去 stackoverflow 查的方式,
目前已經實現遠端連線那台資料庫了
就是透過我自己的開發環境(localhost)利用 php 連線 mariadb 使用 host(那台主機IP) + root + 當初設定那台主機資料庫的密碼 + 要存取的資料庫名稱
我是有看到也要設定 root@127.0.0.1 ,看來可能只需要 root@% 就可以

1
小魚
iT邦大師 1 級 ‧ 2019-01-22 12:43:30

上網搜尋一下 MySql 遠端連線,
這兩個是完全可以通用的,
必須資料庫那台電腦設定,
其他電腦才能夠連進來.

小魚 iT邦大師 1 級 ‧ 2019-01-22 12:44:27 檢舉

遠端連線應該可以查到,
如果查不到就查權限設定吧...

火爆浪子 iT邦研究生 1 級 ‧ 2019-01-22 13:06:19 檢舉

有,我有設定了,都按照 stackoverflow 等等方式,也有添加使用者 root + 資料庫密碼 + % or 127.0.0.0 or localhost

0
混水摸魚
iT邦研究生 2 級 ‧ 2019-01-22 13:49:36

127.0.0.1 不是有效網址,等同於 localhost ,所以你在本機這台當然連不到遠端的資料庫。

0

我一直再看我是不是誤會了什麼,還是你誤會了什麼了。

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連結。

說真的,我真希望是我誤會了。

看更多先前的回應...收起先前的回應...
火爆浪子 iT邦研究生 1 級 ‧ 2019-01-22 14:54:13 檢舉

我是要在a電腦(不管是什麼localhost or 127.0.0.1)連線到b電腦的資料庫,透過php

火爆浪子 iT邦研究生 1 級 ‧ 2019-01-22 14:56:58 檢舉

所以我去b電腦的資料庫新增使用者和做一些設定,能讓其他台主機能連過來存取資料庫

那你要先知道你b電腦的ip是什麼
要用他的ip在a電腦上指定連接。

不可能用127.0.0.1去連接的。

當然b電腦那邊的sql資料庫的使用著用戶。你也得開通一個帳號是可以外連的。(一般預設的帳號都是只允許本地端連接)

在這邊,你得先了解一下網路的基本特性才行。

火爆浪子 iT邦研究生 1 級 ‧ 2019-01-22 15:34:42 檢舉

如果設定的是 '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@%也是一樣。

所以最好還是另開一個帳號試試。

harrytsai iT邦新手 1 級 ‧ 2019-01-22 18:09:12 檢舉

你上網GOOGLE一下Mysql 開放外部連線,大概就是那樣

小魚 iT邦大師 1 級 ‧ 2019-01-23 18:15:58 檢舉

讓我想到127.0.0.1的笑話

小魚 iT邦大師 1 級 ‧ 2019-01-23 18:18:36 檢舉

這一篇
不過我幾年前看的那篇排版比較好看.

攻擊127.0.0.1??
這還真的是一個大笑話。

看完我還真的笑出來了。
難道他怎麼不覺得,127.0.0.1很好侵入!!

0
tsengs
iT邦新手 4 級 ‧ 2020-04-30 21:50:02

給使用者最大許可權

grant all privileges on . to 'root'@'%' identified by 'password';

給部分許可權(test 資料庫)

grant all privileges on test.* to 'root'@'%' identified by 'password' with grant option;

重新整理許可權表

flush privileges;

show grants for 'root'@'localhost';

我要發表回答

立即登入回答