2015-01-09 28 views
5

Tôi đang cố định cấu hình một vùng chứa nodejs để kết nối với cơ sở dữ liệu mysql.Máy chủ lưu trữ mysql Docker không được đặc quyền

Mã của tôi trông như thế này:

var pool = mysql.createPool({ 
    host  : 'mysql', 
    port  : '3306', 
    user  : 'root', 
    password : '...', 
    database : 'general', 
    connectionLimit : 50, 
    queueLimit : 5000 
}); 

Tôi đang sử dụng các tiêu chuẩn mysql container.

Tôi đang sử dụng hình con để bắt đầu các vùng chứa. fig.yml trông giống như sau:

node: 
    build: node 
    ports: 
    - "9000:9000" 
    - "9001:9001" 
    links: 
    - mysql:mysql 
    command: node server/Main.js 

mysql: 
    image: mysql 
    volumes: 
    - /data/test:/var/lib/mysql 
    environment: 
    MYSQL_ROOT_PASSWORD: ... 

Mỗi lần tôi cố gắng để kết nối tôi nhận được lỗi sau:

failed to connect to database: Error: ER_HOST_NOT_PRIVILEGED: Host '172.17.0.142' is not allowed to connect to this MySQL server 

Bất kỳ ý tưởng những gì tôi đang làm sai? Tôi đã chơi xung quanh với wordpress và có vẻ như để kết nối với cùng một db mysql mà không có bất kỳ vấn đề.

Thx!

Chỉnh sửa Vì vậy, tôi đã tìm thấy câu trả lời cuối cùng. Vấn đề thực sự là một vấn đề đặc quyền. Tôi chạy lệnh sau:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' 

Và tôi đã có thể truy cập cơ sở dữ liệu.

+1

Có thể [trợ giúp này] (http://stackoverflow.com/questions/19943615/connect-to-remote-mysql-database) không? Hoặc có thể [this] (http://stackoverflow.com/questions/1559955/host-xxx-xx-xxx-xxx-is-not-allowed-to-connect-to-this-mysql-server)? – wassgren

+0

Phiên bản mysql của bạn là gì? 'General' là từ dành riêng trong mysql 5.6, sử dụng dấu tick trong hồ bơi của bạn – Mihai

+0

@wassgren Tôi không nghĩ đó là vấn đề đặc quyền cấp, vì wordpress kết nối với cùng cơ sở dữ liệu mà không có thêm đặc quyền – Petru

Trả lời

Các vấn đề liên quan