我正在尝试设置要在Docker中使用的MariaDB容器,但似乎做错了。我首先下载并使用以下命令运行它:

docker run -p 127.0.0.1:8002:80 --name some-mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -v c:/mysql -d mariadb:latest

它下载并运行容器。然后,我尝试在其上运行以下SQL命令:
docker exec -it some-mariadb mysql -p -e 'select * from my_table' my_db

它为我提供了MySql的使用信息...我不明白我在做什么错?我在Windows机器上执行此操作,如果有区别的话。

最佳答案

我尝试使用您的命令并获得以下输出:

$> docker exec -it some-mariadb mysql -p -e 'select * from my_table' my_db
Enter password:
ERROR 1049 (42000): Unknown database 'my_db'

实际上,您的mariadb正在运行,并且输出错误消息很有意义。 docker run命令中有两个错误:
  • -p 127.0.0.1:8002:80,mariadb正在侦听3306端口,您可以在Dockerfile of Mariadb中发现唯一公开的端口是3306。我猜您想要的是-p 3306:3306
  • -v c:/mysql,您要在容器目录/c:/mysql下添加额外的卷,但是mariadb的数据量为/var/lib/mysql。如果要在主机上使用mysql数据,则需要-v <your_host_directory>:/var/lib/mysql

  • 如果进入容器some-mariadb并尝试mysql cleint,您将看到没有名为my_db的数据库:
    $> docker exec -it some-mariadb bash
    root@63154453ff14:/# mysql -u root -pmy-secret-pw
    MariaDB [(none)]> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    +--------------------+
    3 rows in set (0.00 sec)
    

    因此,您需要安装正确的mysql数据卷,或者首先初始化mariadb。

    关于docker - 如何在Docker中使用MariaDB?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43422442/

    10-16 08:32