منشور

تنصيب mysql وتهيئته بالشكل الصحيح

تنصيب وتهيئة إعدادات mysql بالشكل الصحيح وحل مشكلة رفض الوصول للمستخدم وعدم القدرة على إجراء اتصال مع قاعدة البيانات

فيما يلي شرح لتنصيب mysql بشكل صحيح على نظام أبونتو تحديدا ويبقى الشرح ساري المفعول لباقي أنظمة لينكس وباقي الأنظمة أيضاً مع بعض التغييرات.

التنصيب

  1. تنصيب mysql

    1
    
     sudo apt install mysql-server
    
  2. تهيئة الإعدادات

    1
    
     mysql_secure_installation
    

حل مشكلة الوصول المرفوض للمستخدم

بعد التنصيبة يجب عند كتابة الأمر التالي وإدخال كلمة سر النظام القدرة على الوصول لسطر أوامر mysql لكتابة أوامر sql هناك، ولكن غالبا ما يتم رفض الوصول لسطر أوامر mysql بعد التنصيب مباشرة، للتأكد أولا من وجود المشكلة أدخل التالي:

1
	mysql -u root -p

وأدخل كلمة سر النظام، جرب أيضا التالي مع استبدال user باسم المستخدم الخاص بك في النظام (والذي يكون مكتوب في الطرفية كالتالي:

user@host:~$

1
	mysql -u user -p

إذا تم رفض الوصول وأعطاك الخطأ “ERROR 1698 (28000): Access denied for user” فإليك الحل:

لحل هذه المشكلة طريقتين:

  • قم بتنفيذ الأمر التالي

    1
    
      sudo mysql -u root
    

ثم أدخل أوامر sql التالية:

1
2
	mysql> USE mysql;
	mysql> SELECT User, Host, plugin FROM mysql.user;

إذا كان الناتج مشابه للتالي:

1
2
3
4
5
6
7
	+------------------+-----------------------+
	| User             | plugin                |
	+------------------+-----------------------+
	| root             | auth_socket           |
	| mysql.sys        | mysql_native_password |
	| debian-sys-maint | mysql_native_password |
	+------------------+-----------------------+

أي أن المستخدم root يستخدم plugin يونكس المسمى auth_socket وهذا هو سبب المشكلة.

علينا بتغيير هذا ال plugin إلى mysql_native_password وفق الأوامر التالية:

1
2
3
	mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
	mysql> FLUSH PRIVILEGES;
	mysql> exit;

ثم قم بإعادة تشغيل mysql

1
	$ service mysql restart
  • أو يمكن إضافة المستخدم الحالي لقاعدة البيانات وإعطائه الصلاحيات المطلوبة وفقا للأوامر التالية:

    1
    2
    3
    
      $ sudo mysql -u root 
    
      mysql> USE mysql;
    

في الأوامر التالية قم بتغيير YOUR_SYSTEM_USER إلى اسم مستخدم النظام الموجود لديك و Password لكلمة السر التي ترغب

1
2
3
4
5
6
7
	mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY 'Password';
	mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
	mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
	mysql> FLUSH PRIVILEGES;
	mysql> exit;

	$ service mysql restart

وبهذا يجب أن تكون المشكلة قد حُلَّت، ﻷي استفسار اتركه في التعليقات أو راسلني عبر البريد الإلكتروني.

المراجع:

هذا المنشور تحت ترخيص CC BY 4.0 بواسطة المؤلف.