我通过 docker compose 部署了 mysql,它可以通过命令
mysql --host=127.0.0.1 --user=root --password=team6 --port=53366
和 mysql --host=0.0.0.0 --user=root --password=team6 --port=53366
在 0.0.0.0 和 127.0.0.1 上使用,但是 mysql --host=localhost --user=root --password=team6 --port=53366
由于“错误 1045 (28000): 用户‘root’@ 的访问被拒绝”而失败。 ‘localhost’(使用密码:YES)”,为什么?
我的最终目标是让这段代码能够工作
con = await mysql.createConnection({
host: 'localhost',
port: '53366', //We need to consider adding new users
user: 'root',
password: 'team6',
database: 'Yahtzee',
});
我的撰写文件:
# Compose file for creating a database named Yahtzee in a mysql container
version: '3.8'
services:
team6db:
image: mysql/mysql-server:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: team6
MYSQL_DATABASE: Yahtzee
MYSQL_ROOT_HOST: '%'
volumes:
- team6db:/var/lib/mysql
- ./Initdb.sql:/docker-entrypoint-initdb.d/Initdb.sql
- ./InsertSampleGameRecords.sql:/docker-entrypoint-initdb.d/InsertSampleGameRecords.sql
ports:
- '53366:3306'
team6phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
restart: always
depends_on:
- team6db
environment:
PMA_HOST: team6db
PMA_USER: root
PMA_PASSWORD: team
ports:
- '50086:80'
volumes:
team6db:
默认情况下,每个容器都会获得一个 IP 地址。因此,在您的情况下,
localhost
主机名不起作用。您可以使用以下命令之一获取 docker 容器的 IP 地址:
docker inspect <CONTAINER_NAME>
或
docker inspect <CONTAINER_ID>
创建连接时使用容器的 IP 地址而不是
localhost
。