لا يمكن الوصول الخلية عامل الميناء

أنا باستخدام docker-compose لإنشاء mysql حاوية. أحصل على إب المضيف 172.21.0.2.ولكن عندما أقوم بتوصيل الخلية. أحصل على خطأ:

  1. بلدي docker-compose.yml:

    version: '2'services:### Mysql container    mysql:      image: mysql:latest      ports:       - "3306:3306"      volumes:       - /var/lib/mysql:/var/lib/mysql     environment:       MYSQL_ROOT_PASSWORD: root       MYSQL_DATABASE: test_db       MYSQL_USER: test       MYSQL_PASSWORD: test_pass
  2. الحصول على بلدي المضيف إب docker inspect db_mysql_1 | grep IPAddress

    "IPAddress": "172.21.0.2",

  3. وصول الخلية: mysql -h 172.21.0.2 -P 3306 -u root -proot.

    ERROR 1130 (HY000): Host '172.21.0.1' is not allowed to connect to this MySQL server

كيف يمكنني الاتصال حاوية الخلية?

يمكنك تمرير متغير بيئة إضافية عند بدء حاوية الخلية MYSQL_ROOT_HOST=<ip> هذا سيخلق مستخدم الجذر مع إذن للدخول من عنوان إب معين. في حال كنت تريد السماح بتسجيل الدخول من أي إب يمكنك تحديد MYSQL_ROOT_HOST=%.

هذا وسوف تعمل فقط للحاويات التي تم إنشاؤها حديثا.

عندما الغزل حاوية جديدة:

docker run --name some-mysql -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest

في ملف الإنشاء سيكون:

version: '2'services:  ### Mysql container  mysql:    image: mysql:latest    ports:      - "3306:3306"    volumes:      - /var/lib/mysql:/var/lib/mysql    environment:      MYSQL_ROOT_PASSWORD: root      MYSQL_DATABASE: test_db      MYSQL_USER: test      MYSQL_PASSWORD: test_pass      MYSQL_ROOT_HOST: '%'  # needs to be enclosed with quotes

في حالتي. لقد حذفت تكوين وحدات التخزين وعملت.

بهذه الطريقة عملت بالنسبة لي:

MYSQL_ROOT_HOST: '%'

هذا هو ما عملت بالنسبة لي:

docker exec -it mysql1 mysql -u root -pupdate mysql.user set host='%' where user='root' and host = 'localhost';flush privileges;

التغيير mysql1 إلى اسم الحاوية الخاصة بك.

ملاحظة: أنا لا أستخدم docker-compose.

عند الاتصال بخادم الخلية ، فإنه يتحقق من ذلك GRANT الجدول (الجدول " المستخدم "في" ميسكل| قاعدة البيانات على خادم ميسكل) ضد عنوان إب من الجهاز العميل ميسكل الاتصال. إذا كان هناك لا توجد إدخالات مطابقة في عمود "المضيف" في جدول "المستخدم" في قاعدة بيانات " ميسكل, سوف الخلية إغلاق الاتصال على الفور مع ERROR 1130.

تحقق مما إذا كان العميل قادرا على الوصول إلى المنفذ 3306 (منفذ ميسكل) على خادم قاعدة البيانات:

telnet 172.21.0.2 3306Trying ::1...Connected to 172.21.0.2.Escape character is '^]'.

يجب عليك تسجيل الدخول إلى خادم الخلية ، وتشغيل "الخلية" للتحقق من جدول المنح:

# mysql mysqlmysql> SELECT host,user FROM user;+-----------------+-----------+| host            | user      |+-----------------+-----------+| 172.21.0.5      | root      || 172.21.0.4      | root      || 127.0.0.1       | root      || ::1             | root      || localhost       | root      |

"الجذر" هو أذن للاتصال من عدة عناوين إب ، ولكن ليس من العميل إب 172.21.0.1. لذلك ، فقط إضافة منح الوصول من هذا الملكية الفكرية:

mysql> GRANT ALL PRIVILEGES ON root.* TO 'your_db'@'172.21.0.1' IDENTIFIED BY 'Password';Query OK, 0 rows affected (0.00 sec)mysql> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.00 sec)

ثم تحقق من اتصالك.