Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để kết nối bàn làm việc mysql với chạy mysql bên trong docker?

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:

  1. 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
  1. 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

  2. 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

  3. 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 đó.

  4. Chạy SQL:

    update mysql.user set host = '%' where user='root';

  5. Thoát mysql khách hàng.

  6. 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     |
+-----------+---------------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bạn sử dụng mệnh đề WITH trong MySQL như thế nào?

  2. Thiết lập cơ sở dữ liệu và tạo người dùng chỉ đọc trong AWS Redshift và Mysql

  3. Cách sử dụng động nhiều cơ sở dữ liệu cho một mô hình trong CakePHP

  4. tạo ngày từ phạm vi ngày

  5. Sửa mã hóa UTF-8 bị hỏng