يدعم ClickHouse بروتوكول MySQL على مستوى الشبكة. يتيح ذلك لبعض العملاء الذين لا تتوفر لهم موصلات ClickHouse أصلية استخدام بروتوكول MySQL بدلًا من ذلك، وقد تم التحقق من توافقه مع أدوات ذكاء الأعمال التالية:
إذا كنت تجرّب عملاء أو عمليات تكامل أخرى غير مختبرة، فضع في اعتبارك احتمال وجود القيود التالية:
- قد لا يكون تنفيذ SSL متوافقًا بالكامل؛ وقد تظهر مشكلات محتملة في TLS SNI.
- قد تتطلب أداة معيّنة ميزات في لهجة MySQL (مثل دوال أو إعدادات خاصة بـ MySQL) لم تُنفَّذ بعد.
إذا كان هناك برنامج تشغيل أصلي متاح (مثل DBeaver)، فمن الأفضل دائمًا استخدامه بدلًا من واجهة MySQL. بالإضافة إلى ذلك، رغم أن معظم مكتبات العملاء للغات البرمجة الخاصة بـ MySQL يُفترض أن تعمل جيدًا، فإن واجهة MySQL ليست مضمونة لتكون بديلًا مباشرًا لقاعدة شيفرة تحتوي على استعلامات MySQL حالية.
إذا كانت حالة الاستخدام لديك تتضمن أداة معيّنة لا يتوفر لها برنامج تشغيل ClickHouse أصلي، وكنت ترغب في استخدامها عبر واجهة MySQL ووجدت بعض حالات عدم التوافق، فيُرجى إنشاء issue في مستودع ClickHouse.
::::note
لدعم لهجة SQL الخاصة بأدوات ذكاء الأعمال المذكورة أعلاه بشكل أفضل، تُشغّل واجهة MySQL في ClickHouse استعلامات SELECT ضمنيًا مع الإعداد prefer_column_name_to_alias = 1.
لا يمكن تعطيل هذا، وقد يؤدي في حالات نادرة إلى اختلاف في السلوك بين الاستعلامات المرسلة إلى واجهتَي الاستعلام العادية وMySQL في ClickHouse.
::::
تمكين واجهة MySQL على ClickHouse Cloud
- بعد إنشاء خدمة ClickHouse Cloud، انقر على الزر
Connect.
- غيّر خيار
Connect with من القائمة المنسدلة إلى MySQL.
- فعّل زر التبديل لتمكين واجهة MySQL لهذه الخدمة تحديدًا. سيؤدي ذلك إلى إتاحة المنفذ
3306 لهذه الخدمة، وستظهر لك شاشة اتصال MySQL التي تتضمن اسم مستخدم MySQL الفريد الخاص بك. وستكون كلمة المرور هي نفسها كلمة مرور مستخدم الخدمة default.
انسخ سلسلة اتصال MySQL الظاهرة.
إنشاء عدة مستخدمي MySQL في ClickHouse Cloud
بشكل افتراضي، يوجد مستخدم مضمّن باسم mysql4<subdomain>، ويستخدم كلمة المرور نفسها الخاصة بالمستخدم default. ويشير الجزء <subdomain> إلى المقطع الأول من اسم المضيف الخاص بك في ClickHouse Cloud. هذا التنسيق ضروري للعمل مع الأدوات التي تدعم الاتصال الآمن، لكنها لا توفّر معلومات SNI ضمن مصافحة TLS الخاصة بها، ما يجعل التوجيه الداخلي مستحيلًا من دون تلميح إضافي في اسم المستخدم (ويُعد عميل MySQL console أحد هذه الأدوات).
ولهذا، نوصي بشدة باتباع التنسيق mysql4<subdomain>_<username> عند إنشاء مستخدم جديد لاستخدامه مع واجهة MySQL، حيث يشير <subdomain> إلى خدمة Cloud الخاصة بك، ويكون <username> لاحقة تختارها كما تشاء.
إذا كان اسم مضيف ClickHouse Cloud لديك هو foobar.us-east1.aws.clickhouse.cloud، فإن الجزء <subdomain> يساوي foobar، وقد يكون اسم مستخدم MySQL المخصّص مثل mysql4foobar_team1.
يمكنك إنشاء مستخدمين إضافيين لاستخدامهم مع واجهة MySQL إذا كنت بحاجة، على سبيل المثال، إلى تطبيق إعدادات إضافية.
-
اختياري: أنشئ ملف تعريف إعدادات لتطبيقه على مستخدمك المخصّص. على سبيل المثال،
my_custom_profile مع إعداد إضافي سيُطبَّق افتراضيًا عند الاتصال بالمستخدم الذي سننشئه لاحقًا:
CREATE SETTINGS PROFILE my_custom_profile SETTINGS prefer_column_name_to_alias=1;
يُستخدم prefer_column_name_to_alias هنا كمثال فقط، ويمكنك استخدام إعدادات أخرى.
-
أنشئ مستخدمًا باستخدام التنسيق التالي:
mysql4<subdomain>_<username> (انظر أعلاه). يجب أن تكون كلمة المرور بتنسيق double SHA1. على سبيل المثال:
CREATE USER mysql4foobar_team1 IDENTIFIED WITH double_sha1_password BY 'YourPassword42$';
أو إذا كنت تريد استخدام ملف تعريف مخصّص لهذا المستخدم:
CREATE USER mysql4foobar_team1 IDENTIFIED WITH double_sha1_password BY 'YourPassword42$' SETTINGS PROFILE 'my_custom_profile';
حيث إن my_custom_profile هو اسم ملف التعريف الذي أنشأته سابقًا.
-
امنح المستخدم الجديد الأذونات اللازمة للتعامل مع الجداول أو قواعد البيانات المطلوبة. على سبيل المثال، إذا كنت تريد منح حق الوصول إلى
system.query_log فقط:
GRANT SELECT ON system.query_log TO mysql4foobar_team1;
-
استخدم المستخدم الذي أنشأته للاتصال بخدمة ClickHouse Cloud الخاصة بك عبر واجهة MySQL.
Troubleshooting تعدد مستخدمي MySQL في ClickHouse Cloud
إذا أنشأت مستخدم MySQL جديدًا وظهر لك الخطأ التالي أثناء الاتصال عبر عميل MySQL CLI:
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading authorization packet', system error: 54
في هذه الحالة، تأكد من أن اسم المستخدم يتبع صيغة mysql4<subdomain>_<username>، كما هو موضح (أعلاه).
تمكين واجهة MySQL في ClickHouse المُدار ذاتيًا
أضِف الإعداد mysql_port إلى ملف إعدادات الخادم. على سبيل المثال، يمكنك تحديد المنفذ في ملف XML جديد داخل المجلد config.d/ folder:
<clickhouse>
<mysql_port>9004</mysql_port>
</clickhouse>
شغّل خادم ClickHouse وابحث عن رسالة في السجل مشابهة لما يلي، تشير إلى الاستماع إلى بروتوكول التوافق مع MySQL:
{} <Information> Application: Listening for MySQL compatibility protocol: 127.0.0.1:9004
يوضح الأمر التالي كيفية ربط عميل MySQL mysql بـ ClickHouse:
mysql --protocol tcp -h [hostname] -u [username] -P [port_number] [database_name]
مثال:
$ mysql --protocol tcp -h 127.0.0.1 -u default -P 9004 default
الناتج عند نجاح الاتصال:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 20.2.1.1-ClickHouse
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
لضمان التوافق مع جميع عملاء MySQL، يُوصى بتحديد كلمة مرور المستخدم باستخدام double SHA1 في ملف الإعدادات.
إذا حُدِّدت كلمة مرور المستخدم باستخدام SHA256، فلن تتمكن بعض البرامج العميلة من المصادقة (mysqljs والإصدارات القديمة من أداة سطر الأوامر MySQL وMariaDB).
القيود:
-
الاستعلامات المُعدّة مسبقًا غير مدعومة
-
تُرسَل بعض أنواع البيانات على هيئة سلاسل نصية
لإلغاء استعلام طويل التشغيل، استخدم العبارة KILL QUERY connection_id (تُستبدل بـ KILL QUERY WHERE query_id = connection_id أثناء المعالجة). على سبيل المثال:
$ mysql --protocol tcp -h mysql_server -P 9004 default -u default --password=123 -e "KILL QUERY 123456;"