很抱歉再次提出“无法连接到数据库”的问题,但是搜索了几个小时之后,我还是没收到。
我希望(非dockerized)invoicePlane应用程序使用dockerized数据库。
所以我正在使用以下docker-compose.yml
version: '2'
services:
db:
image: mariadb:latest
#also tried mysql:latest
restart: always
environment:
MYSQL_DATABASE: 'invoiceplane_db'
MYSQL_USER: 'invoiceplane'
MYSQL_PASSWORD: 'pass1'
MYSQL_ROOT_PASSWORD: 'pass0'
expose:
- '3306'
volumes:
myserver/path:/var/lib/mysql
volumes:
invoiceplane-db:
以sudo docker-compose -f docker-compose.yml up
从容器内部,一切正常。我可以连接,例如通过mysql -uroot -ppass0
,然后查看
+--------------+-----------+
| User | Host |
+--------------+-----------+
| invoiceplane | % |
| root | % |
| root | localhost |
+--------------+-----------+
3 rows in set (0.004 sec)
现在我想尝试从主机访问数据库
mysql invoiceplane_db_1:3306 -uroot -ppass0
其中invoiceplane_db_1是容器的名称。
但是我总是得到:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
通过我的网络搜索,我得到的印象是,这可能与容器bind-address
中的/etc/mysql/my.cnf
有关,例如,其表示为here。但是我没办法做对。最初,该参数已被注释掉。我将其设置为bind-address = 127.0.0.1
并重新启动了容器。它没有帮助。
我在这里想念什么吗?
答案 0 :(得分:0)
这是我为mariadb工作的docker-composer:
db:
image: mariadb:10.4
ports:
- "3306:3306"
volumes:
- db-storage:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root-pass
MYSQL_USER: my-user
MYSQL_PASSWORD: my-user-pass
MYSQL_DATABASE: my-database
从外观上看,您似乎缺少端口映射:3306:3306