踩坑實(shí)錄:vbox虛擬機(jī)centos7安裝mysql8,然后從win主機(jī)連接

1. 裝mysql

司木 - CentOS(linux) 下MySQL8.0.11的yum安裝
就按照連接里面的做就行。簡(jiǎn)單來(lái)說(shuō)就是不要裝最新的el8,裝老一個(gè)版本的。el8安裝過(guò)程會(huì)一大堆軟件包需求blablabla錯(cuò)誤。這次折騰給我的最大教訓(xùn)就是啥都別用最新版的,盡量用相對(duì)老一版的穩(wěn)定版。

如果你和我一樣覺(jué)得mysql8密碼太煩想搞個(gè)簡(jiǎn)單的,那么應(yīng)該需要改一下密碼策略:

set global validate_password.policy=0;
set global validate_password.check_user_name=0;
set global validate_password.length=1;
set global validate_password.mixed_case_count=0;
set global validate_password.number_count=0;
set global validate_password.special_char_count=0;
flush privileges;

查看并確認(rèn)權(quán)限:

SHOW VARIABLES LIKE 'validate_password%';

參考:

Coder-Qian - Mysql 8.0.1修改密碼策略

2. 修改虛擬機(jī)配置從而使得主機(jī)能訪問(wèn)虛擬機(jī)的數(shù)據(jù)庫(kù)。

這里試下來(lái),一個(gè)比較靠譜的方法就是使用NAT,然后把虛擬機(jī)的端口轉(zhuǎn)發(fā)。這樣就可以在主機(jī)用localhost訪問(wèn)了。

具體請(qǐng)看: YYlxid - win下連接virtualbox中l(wèi)inux虛擬機(jī)的mysql

這里有一個(gè)小細(xì)節(jié)。你要從主機(jī)訪問(wèn)虛擬機(jī),那為了方便使用各種工具進(jìn)行訪問(wèn)和操作,你主機(jī)一般都是裝了mysql一套的。這樣的話如果你不特別進(jìn)行配置,那么主機(jī)和虛擬機(jī)的端口都是3306。這樣的話你如果從主機(jī)訪問(wèn)localhost:3306,走的就是主機(jī)的mysql而非虛擬機(jī)的。所以應(yīng)該在虛擬機(jī)設(shè)置的端口轉(zhuǎn)發(fā)那里,把主機(jī)的端口改一個(gè)不一樣的。比如我就改為了33306。

3. 修改mysql配置文件和linux防火墻

配置完了NAT和端口轉(zhuǎn)發(fā),還需要改一下虛擬機(jī)里的mysql配置和防火墻配置從而讓外部能訪問(wèn)進(jìn)來(lái)。首先改下配置文件,比如用vim,那么就打開(kāi):

vim /etc/my.cnf

在最底下加一行:

bind-address=127.0.0.1

其實(shí)bind-address這個(gè)值還有兩種填方法:

bind-address=0.0.0.0

或者:

bind-address={你虛擬機(jī)的實(shí)際ip}

要查看虛擬機(jī)的實(shí)際ip,可以敲ifconfig,或者GNOME右上角點(diǎn)網(wǎng)絡(luò)圖標(biāo)打開(kāi)設(shè)置也可以看到。

搞定以后重啟mysqld服務(wù):

systemctl restart mysqld

然后修改防火墻配置,這里注意下在centos7里不再是iptables,而是firewall-cmd了:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

成功了應(yīng)該跳個(gè)success。

然后重啟防火墻:

firewall-cmd --reload

參考:

How to Allow Remote Connections to MySQL Database on RHEL/CentOS

Centos 7 save iptables settings - serverfault

至此,配置就完成了。在虛擬機(jī)啟動(dòng)的情況下,在主機(jī)用navicat, datagrip等工具訪問(wèn)localhost:33306(如果你和我一樣把主機(jī)端口映射為33306的話),就可以正常使用了。

4. 使用vscode插件訪問(wèn)虛擬機(jī)mysql可能遇到這樣一個(gè)問(wèn)題。

我這邊還進(jìn)一步進(jìn)行了這樣一個(gè)折騰,就是使用vscode連接數(shù)據(jù)庫(kù)。那么這里就要裝些mysql插件了。具體請(qǐng)參考:sigmarising - 使用 Visual Studio Code 鏈接 MySql 數(shù)據(jù)庫(kù)并進(jìn)行查詢

如果你和我一樣,修改過(guò)密碼策略然后用了個(gè)簡(jiǎn)單密碼,那么你在使用vscode插件登錄的時(shí)候,可能會(huì)報(bào)這個(gè)錯(cuò):

ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading Mysql client

但是用命令行和其它工具明明可以連接啊,為什么呢?這個(gè)過(guò)程復(fù)現(xiàn)太折騰了,我盲猜是這個(gè)原因:在虛擬機(jī)里的mysql改過(guò)了策略,但是在主機(jī)的mysql沒(méi)改。所以解決方法,就是在命令行,用賬密登錄,然后再把上面的修改密碼策略的操作搞一遍(沒(méi)錯(cuò),盡管你確實(shí)是用弱密碼登錄成功了,但是你在修改的過(guò)程中就會(huì)發(fā)現(xiàn)策略還是要改)。這樣操作完,再用vscode插件就可以登錄并操作了。阿西,終于搞完了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • feisky云計(jì)算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,373評(píng)論 0 5
  • 1、第八章 Samba服務(wù)器2、第八章 NFS服務(wù)器3、第十章 Linux下DNS服務(wù)器配站點(diǎn),域名解析概念命令:...
    哈熝少主閱讀 3,916評(píng)論 0 10
  • 運(yùn)行操作 CMD命令:開(kāi)始->運(yùn)行->鍵入cmd或command(在命令行里可以看到系統(tǒng)版本、文件系統(tǒng)版本) CM...
    小明yz閱讀 3,007評(píng)論 0 8
  • win7 cmd管理員權(quán)限設(shè)置 net localgroup administrators 用戶名 /add 把“...
    f675b1a02698閱讀 5,522評(píng)論 0 11
  • 運(yùn)行操作 CMD命令:開(kāi)始->運(yùn)行->鍵入cmd或command(在命令行里可以看到系統(tǒng)版本、文件系統(tǒng)版本) CM...
    小沐子_IT閱讀 3,427評(píng)論 0 4

友情鏈接更多精彩內(nèi)容