سؤال

أواجه مشكلة مع مستخدم MySQL الجذر في إعداد MySQL، ولا أستطيع طوال حياتي معرفة كيفية إصلاحها.يبدو أنني أفسدت المستخدم الجذر بطريقة ما، وأصبح وصولي إلى قواعد البيانات الآن غير منتظم للغاية.

كمرجع، أنا أستخدم MAMP على OS X لتوفير خادم MySQL.لست متأكدًا من مدى أهمية ذلك - أعتقد أن كل ما قمت به سيتطلب إصلاح سطر الأوامر لحله.

يمكنني بدء MySQL باستخدام MAMP كالمعتاد، والوصول إلى قواعد البيانات باستخدام المستخدمين "القياسيين" الذين قمت بإنشائهم لتطبيقات PHP الخاصة بي.ومع ذلك، فإن المستخدم الجذر، الذي أستخدمه في عميل MySQL GUI الخاص بي، وأيضًا في phpMyAdmin، يمكنه فقط الوصول إلى قاعدة بيانات "information_schema"، بالإضافة إلى قاعدتين قمت بإنشائهما يدويًا، ومن المفترض (وبالخطأ) تركت الأذونات مفتوحة على مصراعيها.لا يمكن الوصول إلى قواعد البيانات الأخرى البالغ عددها 15 أو نحو ذلك للمستخدم الجذر.عندما أقوم بتحميل phpMyAdmin، تظهر الشاشة الرئيسية:"إنشاء قاعدة بيانات جديدة:لا امتيازات".

لقد قمت بالتأكيد في مرحلة ما بتغيير كلمة مرور المستخدم الجذر باستخدام مربع حوار MAMP.لكنني لا أتذكر ما إذا كنت قد فعلت أي شيء آخر قد يكون سبب هذه المشكلة.لقد حاولت تغيير كلمة المرور مرة أخرى، ويبدو أنه لم يحدث أي تغيير في المشكلة.

لقد حاولت أيضًا إعادة تعيين كلمة مرور الجذر باستخدام سطر الأوامر، بما في ذلك بدء تشغيل mysql يدويًا باستخدام --skip-grant-tables ثم مسح privs، ولكن مرة أخرى، لا يبدو أن هناك شيئًا يحل المشكلة.

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

شكرا جزيلا لمساعدتكم.

هل كانت مفيدة؟

المحلول

والذي لأن MAMP وك سطر الأوامر (وكل شيء باستثناء الخلية MAMP) مختلفة.

وMAMP لها المدمج في الخلية والتي لا يمكن الحصول عليها عن طريق سطر الأوامر، إلا أن البناء في بريس.

لقد كانت هذه تجربتي، ولدي MAMP واستخدام الخلية الأخرى لروبي على القضبان وغيرها من الاشياء.

نصائح أخرى

كان لي نفس القضية:يعمل حساب مستخدم واحد فقط للوصول إلى قواعد بيانات MySQL عبر وحدة التحكم الإدارية أو متصفح الاستعلام.عندما استخدمت جداول Skip-Grant-Grant فجأة، تمكنت جميع الحسابات من تسجيل الدخول، بما في ذلك الجذر.

رأيت ذلك كخطأ يعود إلى عام 2006, ، ولكن الإدخال الأخير لا يوجد فيه أمر يمكن تنفيذه عندما تكون في وضع تخطي المنح الجداول، لذلك ما زلت لم أحل المشكلة.

ما ساعدني
هذه الإجابة مشابهة للإجابة التي وصفها بن باكيلار في الرابط أعلاه.المشكلة تأتي عندما الخاص بك my.ini تم تعطيل علامة تحليل الاسم (تخطي حل الاسم).يؤدي هذا إلى القضاء على قدرة mysql على حل "المضيف المحلي" ولا يحتوي جدول mysql.user إلا على إدخال للمضيف المحلي/الجذر.

قم بتحديث إدخال المضيف المحلي لجدول mysql.user ليصبح 127.0.0.1 بدلاً من ذلك، ويمكنك تسجيل الدخول إلى وحدات التحكم المحلية حتى مع تمكين ميزة تخطي الاسم.

حاول بدء تشغيل الخادم باستخدام --skip-grant-tables ثم التحقق من جداول الامتيازات في قاعدة بيانات mysql:

select * from user where User='root';
select * from tables_priv where User='root';
select * from db where User='root';

يمكنك أيضًا تجربة ما يلي:

show grants for root@localhost;
show grants for root@'%';
show grants for root@'hostname';

بمجرد دخولك، يمكنك القيام بذلك لمحاولة منح امتيازات الجذر الكاملة:

grant all privileges on *.* to root@localhost identified by 'password' with grant option;

وتعليقك يظهر امتيازات الجذر الحالية (بدون --skip منحة الجداول). لا بأس أن لم يكن لديك أي دخول للجذر '@'٪ '، لم يكن لديك أن افتراضيا، ويمكنك أن تنظر فيه إجراء أمني.

ويبدو أنك قد افسدت امتيازات 'root'@'localhost' الخاص بك. GRANT ALL PRIVILEGES ON . هو غريب. عادة، لديك شيء من هذا القبيل GRANT ALL PRIVILEGES ON *.* أو GRANT ALL PRIVILEGES ON myDatabase.myTable. GRANT لا يحدد قواعد البيانات و / أو جداول لمنح امتيازات ل. ليس لدي أي فكرة عن كيفية تمكن العميل الخاص بك لإنتاجه. أنا لا يمكن أن تتكاثر مع العميل ك سطر الأوامر (سلاسل فارغة حاولت، بيضاء، أي نوع من يقتبس ...)، الخلية ترفض بيان غرانت (وهذا، بالطبع، هو السلوك الصحيح). يبدو MAMP يفعل شيئا غريبا حقا. وبما أنني لا يمكن إعادة إنتاج GRANT مثل لك، لا أستطيع أن أقول كيف تفسر الخلية ذلك، ولكن أعتقد أنها وضعت امتيازات ل'N' على المستوى العالمي.

لإصلاحه، كنت في حاجة الى المستخدم مع امتيازات appropiate. عادة، لديك 'root'@'localhost' مستخدم و'root'@'your-hostname'. إذا كنت محظوظا، 'root'@'your-hostname' لا تزال بخير. Afair، اتصالات الخلية العمل على النحو التالي: إذا قمت بالاتصال localhost، يمكنك الاتصال كما 'root'@'localhost' (غير متأكدة 127.0.0.1، وأعتقد أنه هو أيضا 'root'@'localhost'). إذا قمت بالاتصال your-hostname، يمكنك الاتصال كما 'root'@'your-hostname'. إذا امتيازات هذا المستخدم لا تزال يرام، يمكنك تحديث امتيازات ل'root'@'localhost' وانت القيام به.

في تعليقك، يقول لك لا يمكن الاتصال عبر 127.0.0.1 منذ المقبس هو في مكان غير عادي. أعتقد أنك تسيء تفسير الخطأ. IIRC قمت بالاتصال عبر مقبس إذا قمت بالاتصال 'localhost'، ولكن عن طريق TCP / IP إذا قمت بالاتصال 127.0.0.1 أو your-hostname. إذا الخلية يحاول الاتصال عبر مأخذ ولا يمكن العثور على مقبس (لأنك لم يحدد الموقع الصحيح)، تشير رسالة الخطأ حيث الخلية حاولت أن تجد مقبس. رسالة خطأ الخاص بك لا. أعتقد الخطأ هو خطأ الشبكات. ربما كنت قد بدأت لخادم الخلية مع خيار --skip-networking، أو يحدد التكوين الخاص بك غير صحيح ربط الإلكتروني. تحتاج إلى إصلاح هذا أولا، وإلا لا يمكن الاتصال كما 'root'@'your-hostname'.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top