> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-trino-dialect.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> يتيح الاتصال بقواعد البيانات على خادم MySQL بعيد وتنفيذ استعلامات `INSERT` و`SELECT` لتبادل البيانات بين ClickHouse وMySQL.

# MySQL

export const CloudNotSupportedBadge = () => {
  return <a href="https://clickhouse.com/docs/products/cloud/guides/cloud-compatibility#list-of-unsupported-features" className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            غير مدعوم في ClickHouse Cloud
        </a>;
};

<CloudNotSupportedBadge />

يتيح الاتصال بقواعد البيانات على خادم MySQL بعيد وتنفيذ استعلامات `INSERT` و`SELECT` لتبادل البيانات بين ClickHouse وMySQL.

يترجم محرك قاعدة البيانات `MySQL` الاستعلامات إلى خادم MySQL، مما يتيح لك تنفيذ عمليات مثل `SHOW TABLES` أو `SHOW CREATE TABLE`.

لا يمكنك تنفيذ الاستعلامات التالية:

* `RENAME`
* `CREATE TABLE`
* `ALTER`

<div id="creating-a-database">
  ## إنشاء قاعدة بيانات
</div>

```sql theme={null}
CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]
ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')
[SETTINGS enable_compression=0]
```

**معلمات المحرك**

* `host:port` — عنوان خادم MySQL.
* `database` — اسم قاعدة البيانات على الخادم البعيد.
* `user` — مستخدم MySQL.
* `password` — كلمة مرور المستخدم.

**الإعدادات**

<div id="enable-compression">
  ### `enable_compression`
</div>

يُفعّل ضغط zlib لاتصال بروتوكول MySQL. عند ضبطه على `1`، يطلب ClickHouse ضغطًا على مستوى البروتوكول من خادم MySQL.

القيمة الافتراضية: `0`.

مثال:

```sql theme={null}
CREATE DATABASE mysql_db
ENGINE = MySQL('localhost:3306', 'test', 'my_user', 'user_password')
SETTINGS enable_compression = 1;
```

<div id="tls-ssl">
  ## TLS/SSL
</div>

تُمرَّر بيانات اعتماد الاتصال المشفّر بخادم MySQL كمفاتيح [مجموعة مُسمّاة](/ar/concepts/features/configuration/server-config/named-collections) (أو كوسيطات مفتاح-قيمة):

| المعلَمة       | الوصف                                                               |
| -------------- | ------------------------------------------------------------------- |
| `ssl_ca_pem`   | محتويات شهادة CA التي يُتحقَّق باستخدامها من شهادة خادم MySQL.      |
| `ssl_cert_pem` | محتويات شهادة العميل، لاستخدامها في المصادقة المستندة إلى الشهادات. |
| `ssl_key_pem`  | محتويات المفتاح الخاص المرتبط بـ `ssl_cert_pem`.                    |

القيم هي محتويات ملفات PEM المقابلة، ويمكن نسخها إلى مجموعة مُسمّاة أو إلى استعلام. وتُخفى في السجلات واستعلامات `SHOW`، تمامًا كما تُخفى كلمات المرور.

يمكن أيضًا تقديم بيانات الاعتماد نفسها على هيئة مسارات لملفات على الخادم، في `ssl_ca` و`ssl_cert` و`ssl_key`، ولكن **فقط ضمن مجموعة مُسمّاة مُعرَّفة في ملف تهيئة الخادم**؛ ولا يمكن تجاوز هذه القيمة في استعلام. يفتح الخادم هذه الملفات بصلاحياته الخاصة، لذا فإن قبول مسار من SQL سيتيح لأي مستخدم قادر على تعريف مصدر MySQL استكشاف نظام الملفات المحلي والمصادقة باستخدام شهادة ومفتاح لا يُسمح له بقراءتهما بنفسه.

<a id="data_types-support" />

<div id="data-types-support">
  ## دعم أنواع البيانات
</div>

| MySQL                            | ClickHouse                                                      |
| -------------------------------- | --------------------------------------------------------------- |
| UNSIGNED TINYINT                 | [UInt8](/ar/reference/data-types/int-uint)                      |
| TINYINT                          | [Int8](/ar/reference/data-types/int-uint)                       |
| UNSIGNED SMALLINT                | [UInt16](/ar/reference/data-types/int-uint)                     |
| SMALLINT                         | [Int16](/ar/reference/data-types/int-uint)                      |
| UNSIGNED INT, UNSIGNED MEDIUMINT | [UInt32](/ar/reference/data-types/int-uint)                     |
| INT, MEDIUMINT                   | [Int32](/ar/reference/data-types/int-uint)                      |
| UNSIGNED BIGINT                  | [UInt64](/ar/reference/data-types/int-uint)                     |
| BIGINT                           | [Int64](/ar/reference/data-types/int-uint)                      |
| FLOAT                            | [Float32](/ar/reference/data-types/float)                       |
| DOUBLE                           | [Float64](/ar/reference/data-types/float)                       |
| DATE                             | [Date](/ar/reference/data-types/date)                           |
| DATETIME, TIMESTAMP              | [DateTime](/ar/reference/data-types/datetime)                   |
| BINARY                           | [FixedString](/ar/reference/data-types/fixedstring)             |
| POINT                            | [Point](/ar/reference/data-types/geo#point)                     |
| LINESTRING                       | [LineString](/ar/reference/data-types/geo#linestring)           |
| POLYGON                          | [Polygon](/ar/reference/data-types/geo#polygon)                 |
| MULTILINESTRING                  | [MultiLineString](/ar/reference/data-types/geo#multilinestring) |
| MULTIPOLYGON                     | [MultiPolygon](/ar/reference/data-types/geo#multipolygon)       |
| MULTIPOINT                       | [MultiPoint](/ar/reference/data-types/geo#multipoint)           |
| GEOMETRY                         | [Geometry](/ar/reference/data-types/geo#geometry)               |

يُتحكَّم في تحويل الأنواع المكانية، باستثناء `POINT` الذي يُحوَّل دائمًا، بواسطة العلامة `geometry` في الإعداد [`mysql_datatypes_support_level`](/ar/reference/settings/session-settings/mysql#mysql_datatypes_support_level)، وهي مفعّلة افتراضيًا. يُعيَّن نوع العمود العام `GEOMETRY` إلى النوع الشامل [`Geometry`](/ar/reference/data-types/geo#geometry) (وهو `Variant` للأنواع الهندسية المحددة). ولأن هذا العمود يمكن أن يحتوي على قيمة من أي نوع فرعي، فإن قراءة قيمة لا يوجد لنوعها الفرعي مقابل في ClickHouse (`GEOMETRYCOLLECTION`) تؤدي إلى طرح استثناء وقت القراءة؛ ويُقبل عدم التوافق هذا مقابل استخدام نوع هندسي ملائم. تُحوَّل الأعمدة المعرّفة بالنوع `GEOMETRYCOLLECTION` إلى النوع [String](/ar/reference/data-types/string)، شأنها شأن جميع أنواع بيانات MySQL الأخرى.

النوع [Nullable](/ar/reference/data-types/nullable) مدعوم. يُعيَّن العمود المكاني إلى `String` (`Nullable(String)` إذا كان قابلاً للقيم الفارغة) بدلًا من نوع هندسي في ثلاث حالات: إذا كان معرّفًا بالنوع `GEOMETRYCOLLECTION`؛ أو إذا كانت العلامة `geometry` معطّلة ولم يكن النوع `POINT`؛ أو إذا كان العمود قابلاً للقيم الفارغة ولم يكن النوع `POINT`، لأن `Point` هو النوع الهندسي الوحيد الذي يمكن تداخله داخل `Nullable`. في الحالات الثلاث جميعها، تحتفظ السلسلة بالقيمة كما يعيدها MySQL تمامًا: بادئة SRID من 4 بايتات تتبعها حمولة WKB، لذا أزل هذه البايتات الأربع الأولى قبل تمريرها إلى مفكك ترميز WKB.

<div id="global-variables-support">
  ## دعم المتغيرات العامة
</div>

لتحقيق توافق أفضل، يمكنك الإشارة إلى المتغيرات العامة بأسلوب MySQL، بالشكل `@@identifier`.

المتغيرات التالية مدعومة:

* `version`
* `max_allowed_packet`

<Note>
  حتى الآن، هذه المتغيرات مجرد عناصر وهمية ولا تقابل أي شيء فعليًا.
</Note>

مثال:

```sql theme={null}
SELECT @@version;
```

<div id="examples-of-use">
  ## أمثلة الاستخدام
</div>

جدول في MySQL:

```text theme={null}
mysql> USE test;
Database changed

mysql> CREATE TABLE `mysql_table` (
    ->   `int_id` INT NOT NULL AUTO_INCREMENT,
    ->   `float` FLOAT NOT NULL,
    ->   PRIMARY KEY (`int_id`));
Query OK, 0 rows affected (0,09 sec)

mysql> insert into mysql_table (`int_id`, `float`) VALUES (1,2);
Query OK, 1 row affected (0,00 sec)

mysql> select * from mysql_table;
+------+-----+
| int_id | value |
+------+-----+
|      1 |     2 |
+------+-----+
1 row in set (0,00 sec)
```

قاعدة بيانات في ClickHouse تتبادل البيانات مع خادم MySQL:

```sql theme={null}
CREATE DATABASE mysql_db ENGINE = MySQL('localhost:3306', 'test', 'my_user', 'user_password') SETTINGS read_write_timeout=10000, connect_timeout=100;
```

```sql theme={null}
SHOW DATABASES
```

```text theme={null}
┌─name─────┐
│ default  │
│ mysql_db │
│ system   │
└──────────┘
```

```sql theme={null}
SHOW TABLES FROM mysql_db
```

```text theme={null}
┌─name─────────┐
│  mysql_table │
└──────────────┘
```

```sql theme={null}
SELECT * FROM mysql_db.mysql_table
```

```text theme={null}
┌─int_id─┬─value─┐
│      1 │     2 │
└────────┴───────┘
```

```sql theme={null}
INSERT INTO mysql_db.mysql_table VALUES (3,4)
```

```sql theme={null}
SELECT * FROM mysql_db.mysql_table
```

```text theme={null}
┌─int_id─┬─value─┐
│      1 │     2 │
│      3 │     4 │
└────────┴───────┘
```
