搜尋

首頁  >  問答  >  主體

如何從本機主機連接到在docker網路中執行的docker容器

<p>我有一個mysql的docker容器使用docker寫像這樣:</p> <pre class="brush:php;toolbar:false;">version: "3.3" services: db-server: container_name: database image: mysql:latest build: dockerfile: ./Dockerfile environment: MYSQL_ROOT_PASSWORD: rootTest MYSQL_USER: soumalya MYSQL_PASSWORD: userTest ports: - "3031:3306" networks: - internal volumes: - mysql:/var/lib/mysql - ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro restart: unless-stopped networks: internal: driver: bridge volumes: mysql:</pre> <p>我正在用正確的密碼連接到localhost:3031,但它給了我這個錯誤:</p> <pre class="lang-bash prettyprint-override"><code>Access denied for user 'root'@'172.19.0.1' (using password: YES) </code></pre> <p>我該如何修復這個錯誤?同一內部網路中的其他容器也無法連接到該資料庫。 </p><p>我在這裡給Dockerfile的內容:</p><p><code></code></p> <pre class="brush:php;toolbar:false;">ADD init.sql init.sql</pre> <p>我給了init的內容。 sql在這裡:</p> <pre class="brush:php;toolbar:false;">create database if not exists reviews; create database if not exists users; create database if not exists vendors; GRANT ALL PRIVILEGES on reviews.* to 'soumalya'@'%'; GRANT ALL PRIVILEGES on users.* to 'soumalya'@'%'; GRANT ALL PRIVILEGES on vendors.* to 'soumalya'@'%';</pre> <p>從容器日誌中,我可以看到資料庫正在啟動並等待連接埠3306中的傳入連線。 </p>
P粉418854048P粉418854048488 天前520

全部回覆(1)我來回復

  • P粉803527801

    P粉8035278012023-07-26 10:43:28

    正如@HansKillan所說,當資料庫已經存在時,我更改了密碼,更改的密碼被忽略了,它正在使用舊密碼。我必須手動修改我的使用者的密碼寫sql指令使用docker exec <container_name>…使用SQL指令修改使用者密碼。然後一切都成功了。在您的情況下,如果您的資料庫不包含太多數據,那麼您可以直接刪除磁碟區並重新建立容器以縮短時間

    回覆
    0
  • 取消回覆