如何将使用docker创建的MySQL连接到另一个端口(不是端口3306)?

AM1*_*M13 6 mysql docker

我已经在我的电脑上安装了 mySql,所以端口 3306 已经很忙。这就是为什么我必须使用 3306 以外的端口的原因。我希望能够在不使用 docker 命令的情况下将我的机器连接到我的 docekr 实例,这样我就能够使用我的应用程序(Spring Web 应用程序)连接到该实例)。

\n\n

我使用的 Docker 命令:

\n\n
docker run --name jt-mysql -e MYSQL_ROOT_PASSWORD=password -p 3307:3307 -d mysql\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我尝试通过以下方式连接到该位置:

\n\n
mysql --user=root -P 3307 -p\n
Run Code Online (Sandbox Code Playgroud)\n\n

在这种情况下,我收到以下错误:

\n\n
\n

错误 1045 (28000):用户 \'root\'@\'localhost\' 的访问被拒绝(使用\n 密码:YES)

\n
\n\n

请注意,如果我尝试使用安装在我的电脑上的实例,它可以工作,使用:

\n\n
mysql --user=root -P 3306 -p\n
Run Code Online (Sandbox Code Playgroud)\n\n

有关我的 docker 实例的其他信息:

\n\n
docker ps\n
Run Code Online (Sandbox Code Playgroud)\n\n

我得到:

\n\n
\n

f52a94aa63da mysql "docker-entrypoint.s\xe2\x80\xa6" 4\n 分钟前 Up 4 分钟 3306/tcp, 33060/tcp,\n 0.0.0.0:3307->3307/tcp jt-mysql

\n
\n\n

在我的 docker 映像中包含状态(使用 docker 命令输入)我得到:

\n\n
Connection id:      11\nCurrent database:   \nCurrent user:       root@localhost\nSSL:            Not in use\nCurrent pager:      stdout\nUsing outfile:      \'\'\nUsing delimiter:    ;\nServer version:     8.0.19 MySQL Community Server - GPL\nProtocol version:   10\nConnection:     Localhost via UNIX socket\nServer characterset:    utf8mb4\nDb     characterset:    utf8mb4\nClient characterset:    latin1\nConn.  characterset:    latin1\nUNIX socket:        /var/run/mysqld/mysqld.sock\nBinary data as:     Hexadecimal\nUptime:         16 min 50 sec\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用 env 命令:

\n\n
HOSTNAME=f52a94aa63da\nMYSQL_ROOT_PASSWORD=password\nPWD=/\nHOME=/root\nMYSQL_MAJOR=8.0\nGOSU_VERSION=1.7\nMYSQL_VERSION=8.0.19-1debian9\nTERM=xterm\nSHLVL=1\nPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\n_=/usr/bin/env\n
Run Code Online (Sandbox Code Playgroud)\n

小智 5

在端口 3306 启动 MySQL 容器并在端口 3307 公开的命令

docker container run -d --name=LocalMySQLDB -p 3307:3306 -e MYSQL_ROOT_PASSWORD=password mysql
Run Code Online (Sandbox Code Playgroud)

或者

docker run -d --name=LocalMySQLDB -p 3307:3306 -e MYSQL_ROOT_PASSWORD=password mysql
Run Code Online (Sandbox Code Playgroud)

上述命令启动“LocalMySQLDB”容器内的 MySQL 数据库服务器

现在要连接到容器化 mysql 实例,请使用下面附加的命令

mysql -h 127.0.0.1 -uroot -P 3307 -ppassword
Run Code Online (Sandbox Code Playgroud)

为了测试目的,我在本地机器上尝试了很多次。它肯定也对你有用。如果它不适用于您的情况,请发表评论。