Secara default setelah penerapan MySQL memiliki batasan koneksi berikut:
mysql> select host, user from mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
4 rows in set (0.00 sec)
Tampaknya, untuk tujuan keamanan, Anda tidak akan dapat menyambungkannya di luar gambar buruh pelabuhan. Jika Anda perlu mengubahnya agar root dapat terhubung dari host mana pun (misalnya, untuk tujuan pengembangan), lakukan:
-
Mulai gambar mysql Anda dengan semua pemetaan port yang diperlukan:
docker run -p 3306:3306 --name=mysql57 -d mysql/mysql-server:5.7
atau, jika pemetaan port lengkap diperlukan:
docker run -p 3306:3306 -p 33060:33060 --name=mysql57 -d mysql/mysql-server:5.7
-
Jika ini adalah instalasi baru - ambil kata sandi default:
docker logs mysql57 2>&1 | grep GENERATED
-
Hubungkan menggunakan
mysql
klien langsung ke mysqld di buruh pelabuhan:docker exec -it mysql57 mysql -uroot -p
-
Jika ini adalah instalasi baru, Anda akan diminta untuk mengubah kata sandi menggunakan
ALTER USER
memerintah. Lakukan. -
Jalankan SQL:
update mysql.user set host = '%' where user='root';
-
Keluar dari
mysql
klien. -
Mulai ulang penampung:
docker restart mysql57
Sekarang Anda dapat terhubung dari MySQL Workbench ke
host: `0.0.0.0`
port: `3306`
Setelah semua perubahan, kueri akan ditampilkan:
select host, user from mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+---------------+