【发布时间】:2017-11-13 17:50:19
【问题描述】:
我正在尝试让 docker 容器与 mariadb 和 node.js 图像一起使用。该容器将使用/home/mysql 中的现有数据库。但是,当容器启动时,我在 node.js 中收到此“连接失败”错误:
Error: ER_HOST_NOT_PRIVILEGED:
Host '172.18.0.5' is not allowed to connect to this MariaDB server
这是我的 docker-compose.yml:
version: '3'
services:
mariadb:
image: mariadb
restart: always
volumes:
- /home/mysql:/var/lib/mysql
user: "mysql"
ports:
- "3306:3306"
watch:
build: .
restart: always
links:
- mariadb:mysql
environment:
- DOCKER_IP=172.18.0.2
depends_on: ['mariadb']
ports:
- "3000:3000"
看完这个thread,发现mysql其实是在运行,但是却无法让其他服务连接:
这些是我检查过的一些步骤。可以看到,我可以登录mysql实例了:
$ docker exec -it 552aae9ea09c bash
mysql@552aae9ea09c:/$ mysql -u root -p
Enter password: *******
MariaDB [(none)]> SELECT host, user FROM mysql.user;
+-------------+------------------+
| host | user |
+-------------+------------------+
| 127.0.0.1 | root |
| ::1 | root |
| someusername| |
| someusername| root |
| localhost | |
| localhost | dbusername |
| localhost | databasename |
| localhost | root |
+-------------+------------------+
8 rows in set (0.00 sec)
mysql@552aae9ea09c:/$ mysqld --verbose --help | grep bind-address
2017-11-13 17:35:40 139825857279872 [Note] Plugin 'FEEDBACK' is disabled.
--bind-address=name IP address to bind to.
bind-address (No default value)
需要注意的一点是,即使我在yml文件中明确设置了用户为mysql,/home/mysql中的这三个文件:ib_logfile0,ib_logfile1,ib_buffer_pool仍然在systemd-journal-remote 的组,我怀疑与连接失败有关。(reference)
【问题讨论】:
标签: mysql docker docker-compose mariadb