标签 数据库 下的文章

这几天博客迁徙了好几次,从腾讯云转到serv00,又转到racknerd。

其中一波三折,比如数据库导入出错,同一数据库 比如 腾讯云是A serv00是B RN是C

那么我在A转到 B 和 C的时候没有问题,但是如果数据库从B 转到 C 就会出错。

一直百思不得其解,后来发现 A 和 C数据库版本都是mySQL 5.XX , B 也就是serv00 数据库版本是8.XX 。

让我不得不怀疑 ,可能是数据库版本不对导致,5.xx转到8.xx 可以。但是从8.xx转到5.xx 就不行。

- 阅读剩余部分 -

尝试过好多网上的版本,但是始终在最后一步连接数据库上失败 。

这次总算好了,来一次我自己的安装教程吧。

我选择的是这个版本,一直有更新。

1.1.PNG

然后启动-高级设置

端口和存储设置的设置

1.PNG

2.PNG
其中存储设置的文件/文件夹路径可以自己定义, 挂载路径不要换

然后打开PHPmyadmin 新建账户 lsky新建数据库账户.PNG

然后安装,访问到 http://你的ip:1080。如果没问题到这一步就结束了。

安装界面.png

如果出现类似SQL连接错误

SQL: SHOW FULL TABLES WHERE table_type = 'BASE TABLE'



SQLSTATE[HY000] [1045] Access denied for 'root'@'localhost' (using password: YES) (SQL: SHOW FULL TABLES WHERE table_type = 'BASE TABLE').

可能是这是有问题,docker容器连接不上数据库

需要打开xshell 连接上
输入

ifconfig

docker 连接 本地主机 数据库1.PNG
docker连接本地主机数据库2.PNG

把数据库连接地址 127.0.0.1 修改成查询到的 172.17.0.1

如果不出意外就安装完成了 ,接着用群晖的反向代理服务器去设置外网访问。

控制面板 - 应用程序门户 - 反向代理服务器

lskypro反向代理服务器设置.PNG

感谢作者

在docker容器里localhost并不是指宿主机的localhost
由此原因,并不能在容器中通过localhost:3306访问到宿主机的mysql

docker在运行时就建立了虚拟网卡,并命名为docker0
我们可以在宿主机上运行ifconfig看到它,这就是宿主机建立的网桥,用于与各个容器之间通信

宿主机在与容器同一局域网的IP地址一般是docker0对应的IP地址段的首个地址(如172.0.17.1)
我们可以在容器里通过172.0.17.1:3306访问到宿主机的mysql服务器

mysql服务器默认的设置为允许127.0.0.1段的ip地址访问
所以此时用172.0.17.1:3306仍然无法访问到宿主机
此时需要在设置一下mysql

mysql>GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql>flush privileges;
// 其中各字符的含义:
// . 对任意数据库任意表有效
// "root" "123456" 是数据库用户名和密码
// '%' 允许访问数据库的IP地址,%意思是任意IP,也可以指定IP
// flush privileges 刷新权限信息

作者:Exqlnet
链接:https://www.jianshu.com/p/3e1fd311ba87
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

lskypro反向代理服务器设置.PNG