当前位置: 首页 > 知识库问答 >
问题:

如何访问我的docker maria db?

东方和煦
2023-03-14

我的主要问题是,在我用命令< code > docker run-name d B- e MYSQL _ ROOT _ PASSWORD = test-d-p 3306:3306 mariadb 为我的Maria db创建了docker容器之后,我该如何访问sql db?

我在某处看到过一个使用临时(退出后容器被删除)容器的解决方案,但是再也找不到了。

我正在搜索这样的命令:< code > sudo docker exec-it[other flags][command]db 。

共有3个答案

邵子平
2023-03-14

首先进入集装箱码头

 docker exec -it some-mariadb bash

'thom-maryadb'是mysql容器名称

然后使用mysql终端命令直接访问数据库

mysql -u root -p
戚建白
2023-03-14

来自 Mariadb 官方网站:

如果我们尝试连接到本地主机上的MariaDB服务器,客户端将绕过网络,并尝试使用本地文件系统中的套接字文件连接到服务器。但是,当MariaDB在容器中运行时,这不起作用,因为服务器的文件系统与主机隔离。客户端无法访问容器中的套接字文件,因此无法连接。

因此,必须使用TCP连接到MariaDB服务器,即使客户端与服务器容器在同一台机器上运行。

大多数MariaDB映像,包括官方映像,都使用#my.cnf#文件中的绑定地址选项禁用了外部TCP连接。本指南中使用的docker映像基于Ubuntu,因此文件位于 /etc/mysql/my.cnf.

要使用MariaDB,我们需要编辑配置文件以更改适当的选项,然后重新启动容器。

在容器中,编辑文件 my.cnf 并检查以绑定地址开头的行。在行的开头放置一个哈希值以将其注释掉:

#bind-address            = 127.0.0.1

保存文件。

在容器中,将shutdown命令发送给MariaDB。这将关闭服务器,并退出主机:

mysqladmin -u root -p shutdown

再次启动容器。这次 MariaDB 服务器将启用网络连接:

docker start mariadbtest

查找已分配给容器的IP地址:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mariadbtest

现在,您可以使用到该IP地址的TCP连接连接到MariaDB服务器。

如上所述在 MariaDB 中启用网络连接后,我们将能够从容器外部连接到服务器。

在主机上,运行客户端并将服务器地址(“-h”)设置为在上一步中找到的容器的IP地址:

mysql -h 172.17.0.2 -u root -p

这种简单的连接形式应该在大多数情况下都能工作。根据您的配置,可能还需要指定服务器端口或强制TCP模式:

mysql -h 172.17.0.2 -P 3306 --protocol=TCP -u root -p

在单独的Docker容器中运行的多个MariaDB服务器可以使用TCP相互连接。这对于形成Galera集群或复制很有用。

当通过Docker运行集群或复制设置时,我们希望容器使用不同的端口。实现这一点的最快方法是将容器端口映射到我们系统上的不同端口。我们可以在创建容器时这样做(docker run命令),如果需要的话,可以使用-p选项多次。例如,对于Galera节点,我们将使用类似如下的映射:

-p 4306:3306 -p 5567:5567 -p 5444:5444 -p 5568:5568
李永寿
2023-03-14

在主机上安装 mysql 客户端,

apt-get install mysql-client

然后使用以下命令访问数据库容器。

mysql -u<user> -p<pass> -h $(docker inspect --format '{{ .NetworkSettings.IPAddress }}' <db-container>)

该命令将自动获取 docker 容器的 IP。

确保更换

mysql -uroot -ptest -h $(docker inspect --format '{{ .NetworkSettings.IPAddress }}' db)

您的命令让mariadb在标准端口3306上运行。如果没有,您必须告诉mysql命令新的端口。

 类似资料:
  • 问题内容: 我有包含Gmail登录信息的Cookie,因此Chrome会自动打开我的Gmail。 我尝试了以下代码,但是没有用: 我检查了它的目录是可以的。这里有什么问题? 问题答案: 我以前没有注意到的Chrome驱动程序官方Wiki页面上有一个“ 已知问题”部分: 已知的问题 3。无法指定自定义配置文件 现在,我不知道这是不是过时的。我找不到为此的错误报告。的确,您不能通过(自2013年7月起

  • 如果我尝试调用GMail API,我会得到以下错误: 首先我生成一个代币 接下来我测试令牌 我得到一个错误400错误的请求作为回报。但如果我使用不同的范围,例如谷歌,我会得到200 ok。 我认为错误是“sub”:客户的电子邮件。我尝试在谷歌控制台中添加更多的GMail,有3封邮件是自动为项目创建的,只有来自Json的邮件返回我失败,如果尝试其他邮件,包括自动为项目创建的邮件和我自己的GMail(

  • 问题内容: 我使用Minify来缩小并缓存所有脚本请求。 我只希望我的用户能够访问JavaScript文件的缩小版本。 Minify位于,我的脚本位于。如何阻止直接访问未缩小的JavaScript文件所在的位置。我宁愿不要将它们从文档根目录中删除,但这是一个选择。 请注意,我使用的是Zend Framework,因此应用程序的实际根目录已移至。htaccess文件可处理重写。 问题答案: 您不能仅

  • 我正在为我的WordPress(xampp)使用localhost。我已经更改了wp配置。但是当我想访问(http://localhost/wordpress/wp-admin/install.php)这表明: 警告:需要\u一次(C:\xampp\htdocs\wordpress/wp load.php):无法打开流:在C:\xampp\htdocs\wordpress\wp admin\ins

  • 所以我正在处理这个Django项目,使用MySQL作为DB引擎。 我犯了一些错误,现在我不得不删除一个我无意中创建的表。因此,我试图通过命令行访问DB,但不知道如何访问。 有人能帮忙吗?还是有更好的方法在MySQL DB中删除一个表? 谢谢。

  • 问题内容: 我想从Python访问我的网络摄像头。 我尝试使用VideoCapture扩展(教程),但对我而言效果不佳,我不得不解决一些问题,例如分辨率> 320x230时它有点慢,有时它返回时没有明显原因。 是否有更好的方法从Python访问我的网络摄像头? 问题答案: OpenCV支持从网络摄像头获取数据,并且默认情况下随附Python包装器,您还需要安装OpenCV Python扩展名(称为