iT邦幫忙

0

無法以localhost連線到mariadb

  • 分享至 

  • xImage

我目前的做法是在wsl2上安裝docker,並以container的形式啟動mariadb

但很奇怪的是,我其他的服務,如swagger,在windows這邊都能用localhost來連到(目前試都是用edge連線)

但唯獨mariadb,我在windows使用heidisql這個工具,一定要輸入wsl eth0的ip才能成功連線

我如果用localhost連線,一律都會拒絕連線
access denied for user 'root'@'localhost' (using password: yes)

目前還沒試過其他種類的db,但不能用localhost來連線我感覺滿不方便的

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
wiseguy
iT邦超人 1 級 ‧ 2023-01-17 01:04:17

沒什麼奇怪的,就是「它認為的 localhost 不是你認為的 localhost」而已。
要嘛,在 wsl 所看到的你的連線並不是來自 127.0.0.1,那當然就不會跟 localhost 相同。
要嘛,就是 mariadb 沒啟用 domane 解析 (求速度,預設不解析),那當然就直接判定 localhost == 127.0.0.1 。

0
小哈片刻
iT邦研究生 4 級 ‧ 2023-01-17 22:13:24

也有可能是mariadb不允許你用root@localhost登入
你可以試著進mariadb的console,執行下面這指令看看

GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
0
kennex_x
iT邦新手 4 級 ‧ 2023-01-19 15:03:10

之前自己架設MySQL也是有遇到相同的問題,
我用 docker exec -it [contianer-name] bash
進去裡面以後再登入MySQL然後輸入以下語法就可以了,
預設是只能在"localhost"的ip位址下才被允許登入,
所以要給予連線的權限因此改用"%"就可以了。

GRANT ALL PRIVILEGES on *.* to 'root'@'%' IDENTIFIED BY 'Password';
FLUSH PRIVILEGES;

希望有幫到你 =)

另外補充,

建議可以另外寫一個專門跟DB做連線的Script檔案,
這樣你在其他程式的開發上只要引用這個檔案就可以直接做連線,
應該也能稍稍解決你直接引用host = "localhost" 的困擾。

我要發表回答

立即登入回答