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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值