Theo mặc định sau khi triển khai MySQL có các hạn chế kết nối sau:
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)
Rõ ràng, vì mục đích bảo mật, bạn sẽ không thể kết nối với nó bên ngoài hình ảnh docker.Nếu bạn cần thay đổi điều đó để cho phép root kết nối từ bất kỳ máy chủ nào (giả sử cho mục đích phát triển), hãy thực hiện:
-
Bắt đầu hình ảnh mysql của bạn với tất cả các ánh xạ cổng được yêu cầu:
docker run -p 3306:3306 --name=mysql57 -d mysql/mysql-server:5.7
hoặc, nếu cần lập bản đồ cổng hoàn chỉnh:
docker run -p 3306:3306 -p 33060:33060 --name=mysql57 -d mysql/mysql-server:5.7
-
Nếu đây là cài đặt mới - lấy mật khẩu mặc định:
docker logs mysql57 2>&1 | grep GENERATED
-
Kết nối bằng
mysql
khách hàng trực tiếp đến mysqld trong docker:docker exec -it mysql57 mysql -uroot -p
-
Nếu đây là bản cài đặt mới, bạn sẽ được yêu cầu thay đổi mật khẩu bằng
ALTER USER
yêu cầu. Làm điều đó. -
Chạy SQL:
update mysql.user set host = '%' where user='root';
-
Thoát
mysql
khách hàng. -
Khởi động lại vùng chứa:
docker restart mysql57
Bây giờ bạn sẽ có thể kết nối từ MySQL Workbench với
host: `0.0.0.0`
port: `3306`
Sau tất cả các thay đổi, truy vấn sẽ hiển thị:
select host, user from mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+---------------+