2017-11-13 7 views
0

ドッキング用のコンテナをmariadbとnode.jsのイメージで使用しようとしています。コンテナは/home/mysqlの既存のデータベースを使用します。しかし、コンテナが起動されたとき、私はこれを取得していNode.jsの中でエラーを「接続に失敗しました」:ここでは ER_HOST_NOT_PRIVILEGED - ドッキング用のコンテナがmariadbに接続できない

Error: ER_HOST_NOT_PRIVILEGED: 
Host '172.18.0.5' is not allowed to connect to this MariaDB server 

は私のドッキングウィンドウ-compose.ymlです:

version: '3' 
services: 
    mariadb: 
    image: mariadb 
    restart: always 
    volumes: 
    - /home/mysql:/var/lib/mysql 
    user: "mysql" 
    ports: 
     - "3306:3306" 
    watch: 
    build: . 
    restart: always 
    links: 
     - mariadb:mysql 
    environment: 
     - DOCKER_IP=172.18.0.2 
    depends_on: ['mariadb'] 
    ports: 
     - "3000:3000" 

このthreadを読んだ後私はmysqlが実際に動作していることがわかりましたが、他のサービスを接続することができませんでした。これらは私がチェックしたいくつかのステップです。あなたが見ることができるように、私は、MySQLインスタンスにログインすることができます注意する

$ docker exec -it 552aae9ea09c bash 

    [email protected]:/$ mysql -u root -p 
    Enter password: ******* 

    MariaDB [(none)]> SELECT host, user FROM mysql.user; 
    +-------------+------------------+ 
    | host  | user    | 
    +-------------+------------------+ 
    | 127.0.0.1 | root    | 
    | ::1   | root    | 
    | someusername|     | 
    | someusername| root    | 
    | localhost |     | 
    | localhost | dbusername  | 
    | localhost | databasename  | 
    | localhost | root    | 
    +-------------+------------------+ 
    8 rows in set (0.00 sec) 


[email protected]:/$ mysqld --verbose --help | grep bind-address 

2017-11-13 17:35:40 139825857279872 [Note] Plugin 'FEEDBACK' is disabled. 
    --bind-address=name IP address to bind to. 

bind-address          (No default value) 

一つであることを私は明示的にYMLファイルにmysqlにユーザを設定したにも関わらず、この3つのファイル内の/ home/mysqlの:ib_logfile0ib_logfile1ib_buffer_poolは、私は接続障害とは何かを持っている疑いがあるsystemd-journal-remote、グループの下にまだある(reference

答えて

1

あなたはMariaDBは、あなたではないと考えているという事実によって引き起こされるされるエラー。サーバーに接続する権限があります。つまり、Node.jsアプリケーションのデータベースユーザーを作成していないか、そのユーザーの権限が正しくありません。

これを解決するための偽の方法は、Node.jsアプリケーション用に別のユーザーを作成することです。次のSQLをファイルに書き込み、ボリュームを/docker-entrypoint-initdb.dにマウントすることで、これを自動化できます。

CREATE USER 'my-app-user'@'%' IDENTIFIED BY 'my-app-password'; 
GRANT ALL ON *.* TO 'my-app-user'@'%'; 

の変更は、ユーザ名とそれに応じてパスワードとはALL特権から与えられた権限を減らします。ワイルドカードホスト名%を特定のIPアドレスまたはホスト名に変更することもできます。

関連する問題