从容器中连接到远程mysql数据库

fcwjkofz  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(387)

在本地计算机上,我可以使用mysql cli命令轻松连接到mysql数据库的远程示例(假设设置了环境变量):


# mysql -u root -p$DB_PASSWORD -h $DB_HOST --port=$DB_PORT

mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7365
Server version: 5.7.14-google (Google)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.05 sec)

但是,使用docker它只是挂起:

docker run --rm -it --name mysql -e MYSQL_RANDOM_ROOT_PASSWORD=yes mysql \
mysql -u root -p$DB_PASSWORD -h $DB_HOST --port=$DB_PORT

mysql: [Warning] Using a password on the command line interface can be insecure.
show databases;
^C
^C
exit
exit
^C

而且必须 docker container stop mysql 从另一个终端窗口退出mysql容器。
我甚至尝试连接到容器并运行相同的命令都没有用。尝试连接到一个aws mysql示例和google cloud sql示例,也尝试直接在命令行中输入变量,结果都是一样的。为什么要挂起来?我怎样才能让它工作?谢谢!

ujv3wf0j

ujv3wf0j1#

我尝试了所有的方法,但下面的步骤已经解决了我的问题。在容器内运行命令
dpkg重新配置数据
它会要求您选择地理区域和时区,然后您就完成了。

5lhxktic

5lhxktic2#

尝试公开mysql的默认端口

docker run -p 3306:3306 ...
xuo3flqw

xuo3flqw3#

我使用的是googlecloudsql,需要将ip地址列入白名单才能允许访问。所以加上这个解决了连接问题。

相关问题