docker安裝mysql常見問題


安裝:

請看鏈接:https://www.cnblogs.com/jingxiaoniu/p/12557663.html

 

問題:

php代碼測試連接mysql報錯,連接失敗

$servername = "mysql";
$username = "root";
$password = "root";

// 創建連接
$conn = new mysqli($servername, $username, $password);

// 檢測連接
if ($conn->connect_error) {
    die("連接失敗: " . $conn->connect_error);
}
echo "連接成功";

 

一 沒有mysqli擴展支持

php鏈接mysql需要mysqli擴展的支持,docker安裝mysql默認沒有mysqli擴展,需要下載。

1 進入docker的mysql容器內部

docker exec -it [容器ID] bash

2 進入docker-php-ext-install目錄

cd /usr/local/bin

3 下載mysqli擴展

./docker-php-ext-install mysqli

4 查看擴展目錄

cd /usr/local/lib/php/extension/no-debug-non-zts-[時間版本]

5 查看是否成功

是否有mysqli.so文件,如果有就表示下載成功

6 修改php配置文件,添加mysqli.so擴展

extension=mysqli.so

7 重啟php容器

docker restart [容器名稱|ID]

 

二 mysql鏈接主機問題

 php要鏈接docker中運行的mysql是不能用localhost或127.0.0.1來鏈接的,因為每個docker運行容器的localhost 127.0.0.1都是自己容器本身,不是mysql容器,需要修改成mysql容器內部IP或者是mysql容器名稱

1 獲取容器內部IP地址

docker inspect [容器名稱|ID] |grep IPAddress

docker inspect --format='{{.NetworkSettings.IPAddress}}' [容器名稱|ID]

2 修改連接主機IP (如:)

$servername = 'mysql'

$servername = '172.27.0.5'

 

三 mysql8版本問題

mysql8.0使用新的安全驗證方式caching_sha_password,默認是mysql_native_password

解決方法:

1 查看用戶plugin方式,如果為 caching_sha_password 修改

select * from user\G;

2 設置用戶不過期可跳過

ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;

3 修改身份驗證類型

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root'

4 刷新權限生效

FLUSH PRIVILEGES;

 

四 navicat連接mysql失敗

主機名或ip地址不能使用127.0.0.1 或 localhost鏈接,使用本機IP

1 查看本機IP地址

ifconfig

 

以上就是這次的全部內容!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM