Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menyambung dari localhost ke bekas docker yang berjalan dalam rangkaian docker

<p>Saya mempunyai bekas docker mysql yang ditulis menggunakan docker seperti ini:</p> <pre class="brush:php;toolbar:false;">versi: "3.3" perkhidmatan: db-server: nama_bekas: pangkalan data imej: mysql:terkini membina: dockerfile: ./Dockerfile persekitaran: MYSQL_ROOT_PASSWORD: rootTest MYSQL_USER: soumalya MYSQL_PASSWORD: userTest pelabuhan: - "3031:3306" rangkaian: - dalaman jilid: - mysql:/var/lib/mysql - ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro mulakan semula: kecuali dihentikan rangkaian: dalaman: pemandu:jambatan jilid: mysql:</pre> <p>Saya menyambung ke localhost:3031 dengan kata laluan yang betul, tetapi ia memberi saya ralat ini:</p> <pre class="lang-bash prettyprint-override"><code>Akses ditolak untuk pengguna 'root'@'172.19.0.1' (menggunakan kata laluan: YA) </code></pre> <p>Bagaimanakah saya boleh membetulkan ralat ini? </p><p>Saya memberikan kandungan Dockerfile di sini:</p><p><kod></code></p> <pre class="brush:php;toolbar:false;">TAMBAH init.sql init.sql</pre> <p>Saya memberikan kandungan init. sql di sini:</p> <pre class="brush:php;toolbar:false;">buat pangkalan data jika tiada ulasan; cipta pangkalan data jika tidak wujud pengguna; cipta pangkalan data jika tidak wujud vendor; BERIKAN SEMUA KEISTIMEWAAN pada ulasan.* kepada 'soumalya'@'%'; BERIKAN SEMUA KEISTIMEWAAN kepada pengguna.* kepada 'soumalya'@'%'; BERIKAN SEMUA KEISTIMEWAAN kepada vendor.* kepada 'soumalya'@'%';</pre> <p>Daripada log kontena, saya dapat melihat bahawa pangkalan data sedang dimulakan dan menunggu sambungan masuk dalam port 3306. </p>
P粉418854048P粉418854048452 hari yang lalu487

membalas semua(1)saya akan balas

  • P粉803527801

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

    Seperti yang dikatakan @HansKillan, saya menukar kata laluan apabila pangkalan data sudah wujud, kata laluan yang ditukar diabaikan, ia menggunakan kata laluan lama. Saya terpaksa menukar kata laluan pengguna saya secara manual dengan menulis arahan sql menggunakan docker exec <container_name>... menggunakan arahan SQL untuk menukar kata laluan pengguna. Kemudian semuanya berjaya. Dalam kes anda, jika pangkalan data anda tidak mengandungi banyak data, maka anda hanya boleh memadamkan kelantangan dan mencipta semula bekas untuk memendekkan masa

    balas
    0
  • Batalbalas