Phpmyadmin: الاتصال بقاعدة بيانات phpMyAdmin عن بعد باستخدام R.

تم إنشاؤها على ١١ مارس ٢٠١٩  ·  5تعليقات  ·  مصدر: phpmyadmin/phpmyadmin

مشكلتي

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

معلومات أولية

حصلت على المعلومات التالية للعمل معها:

  • المضيف: tempdb.companyname.com/phpMyAdmin
  • اسم المستخدم: dbs_guest
  • كلمة المرور: كلمة مرور الضيف
  • اسم قاعدة البيانات: اسم الشركة

ما حاولت وماذا نجح

بعض الأشياء الجديرة بالملاحظة:

  1. لقد تمكنت من تسجيل الدخول إلى phpMyAdmin عبر Chrome وتشغيله بنجاح
    استعلامات حتى أعلم أن خادم MySQL يعمل وأن معلومات تسجيل الدخول هي
    صيح.
  2. لقد تمكنت أيضًا من تصدير قاعدة البيانات كملف .sql ؛ أقاموه
    محليا؛ تم الوصول إليه مباشرة باستخدام MariaDB ؛ وتمكنت من الوصول إليه باستخدام
    R وحزم R ذات الصلة.

بمعنى آخر ، لا يبدو أنها مشكلة في قاعدة البيانات البعيدة
نفسها ، تثبيت MariaDB الخاص بي ،
أو مع R وحزمها. [ملاحظة: قاعدة البيانات التي يمكنني الوصول إليها حاليًا
لا يمثل سوى عينة صغيرة من قاعدة البيانات الكاملة ، لذا فإن تنزيل كل شيء
محليًا ليس خيارًا قابلاً للتطبيق].

الحل الذي أبحث عنه

الآن أحاول معرفة ما إذا كانت المتغيرات التي أستخدمها في R.
وظيفة إنشاء اتصال خاطئة (وإذا كانت هذه هي الحالة ، فماذا
هل يجب أن أستخدمه بدلاً من ذلك) أو إذا كنت أفكر في كل شيء بشكل خاطئ - ربما
لأن هناك شيئًا مختلفًا تمامًا عن phpMyAdmin أنا
مفقود. إذا كان هذا هو الحال في الواقع، أود أن أعرف ما أود أن الحاجة
لإنشاء اتصال (على سبيل المثال ، هل سأحتاج إلى عنوان IP الخاص بـ
خادم MySQL نفسه ليكون قادرًا على الاتصال عن بُعد؟).

لإعطائك فكرة عن القيم التي حاولت استخدامها ، إليك مثال على
كود R الذي جربته:

con <- dbConnect(RMariaDB::MariaDB(),
                 host = 'tempdb.companyname.com/phpMyAdmin',
                 dbname = 'companyname',
                 user = 'dbs_guest',
                 password = 'guestpassword')
temptable <- tbl(con, "temptable")

على وجه الخصوص ، لست متأكدًا مما إذا كانت قيمة " المضيف " صحيحة ، خاصة
منذ عندما قمت بتسجيل الدخول إلى الخادم يتم إعطاء "الخادم: المضيف المحلي عبر مقبس UNIX".
أيضا، فإن "المستخدم" ضرورة أن يتم سرد باسم " dbs_guest @ المضيف المحلي " (كما هو الحال عندما
تسجيل الدخول إلى phpMyAdmin) أو يمكن أن تتضمنه قيمة "host". أخيرا،
يمكنني أيضًا تمرير حجة " المنفذ " ولكن ليس لدي أي فكرة عما سيكون عليه ذلك
على أي حال. أوه ، ولست متأكدًا مما إذا كان أي من هذا سيعتمد على ما إذا كنت حاليًا أم لا
قم بتسجيل الدخول إلى phpMyAdmin (باستخدام Chrome ، على سبيل المثال) أثناء تشغيل هذه الأوامر.

للتكرار ، أحاول فقط معرفة ما إذا كان هناك شيء يتعلق بـ phpMyAdmin
هذا يجعل ما أحاول القيام به مستحيلاً (وما سأفعله بدلاً من ذلك)
أو إذا كانت قيم المتغيرات كلها خاطئة.

شكرا لصبرك.

بإخلاص،
ستيف

سياق إضافي

phpMyAdmin
  • إصدار phpMyAdmin: 4.0.10deb1
خادم قاعدة البيانات
  • الخادم: مضيف محلي عبر مقبس UNIX
  • نوع الخادم: MySQL
  • إصدار الخادم: 5.5.41-0ubuntu0.14.04.1 - (Ubuntu)
  • إصدار البروتوكول: 10
  • المستخدم: dbs_guest @ localhost
  • مجموعة أحرف الخادم: UTF-8 Unicode (utf8)
قاعدة بيانات للانترنت
  • أباتشي / 2.4.7 (أوبونتو)
  • إصدار عميل قاعدة البيانات: libmysql - 5.5.41
  • امتداد PHP: mysqli
question wontfix

التعليق الأكثر فائدة

تمنع معظم عمليات تثبيت MySQL اتصالات الشبكة الواردة افتراضيًا. من أجل الاتصال مباشرة من عنوان خارجي ، مثل تطبيق يعمل على جهاز الكمبيوتر المحلي الخاص بك ، يجب أن تعرض منفذ MySQL للإنترنت. هذا بشكل عام ممارسة أمنية سيئة. في كثير من الأحيان ، يعمل phpMyAdmin على نفس الخادم مثل مثيل MySQL ، لذلك فإنه يتصل إما بعنوان المضيف المحلي (127.0.0.1) أو عبر ملف مقبس UNIX (وهو ما يقوم به phpMyAdmin).

داخل phpMyAdmin نفسه ، لا نقوم بتضمين أي طريقة لعكس أو إعادة توجيه الاتصالات الواردة مباشرة إلى MySQL لأن ذلك سيعرض MySQL تمامًا مثل فتح منفذ MySQL مباشرة على الإنترنت ، مرة أخرى فكرة سيئة للغاية. لهذا السبب فإن استخدام عنوان URL الخاص بـ phpMyAdmin نفسه لأن سلسلة الاتصال الخاصة بك لا تعمل. أنت محق في أنك تحتاج إلى عنوان IP للخادم (أو اسم المضيف) هنا بدلاً من ذلك.

بشكل عام ، لديك ثلاثة خيارات للاتصال بمثيل MySQL / MariaDB البعيد:

  1. تعريض المنفذ مباشرة (الذي أوصي ضده) ،
  2. استضافة تطبيقك مباشرة على الخادم والوصول إليه عن بُعد (كما هو الحال مع phpMyAdmin أو WordPress أو العديد من الأدوات الأخرى ، على الرغم من أنني لا أعرف ما إذا كان يمكن استخدام R بهذه الطريقة) ، أو
  3. كشف API على الخادم من خلال بعض التطبيقات المخصصة ، والتي تتم استضافتها على خادم MySQL ، والتي يمكن لتطبيقك المحلي الاتصال بها مباشرة.

للأسف ، لا يمكن لـ phpMyAdmin مساعدتك في أي من هؤلاء.

ال 5 كومينتر

SplashDance أنا في حيرة من

لا أفهم لماذا يكون لـ R علاقة بـ phpMyAdmin؟

cc ibennetch
cc moriciofauth

هل أسأت فهم مشكلتك؟

حق. أحصل على واجهة phpMyAdmin للتفاعل مع خادم قاعدة البيانات وليس الخادم نفسه. أو ، على الأقل ، لدي بعض الفهم الغامض أنه للتفاعل مع الخادم ، يجب أن أتصفح phpMyAdmin.

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

لا بد لي من الذهاب من خلال phpMyAdmin.

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

هل حاولت الاتصال بـ R بـ mysql مثل http://stla.github.io/stlapblog/posts/RMySQL.html يقترح؟

لكن في الوقت الحالي ليس لدي سوى عنوان phpMyAdmin للعمل معه

ربما يكون خادم قاعدة البيانات على نفس الجهاز من قاعدة البيانات ، وهذا هو سبب امتلاكك فقط اسم مضيف "phpmyadmin" / قاعدة البيانات؟ الخادم

هل هذا يجيب على سؤالك SpashDance ؟

تمنع معظم عمليات تثبيت MySQL اتصالات الشبكة الواردة افتراضيًا. من أجل الاتصال مباشرة من عنوان خارجي ، مثل تطبيق يعمل على جهاز الكمبيوتر المحلي الخاص بك ، يجب أن تعرض منفذ MySQL للإنترنت. هذا بشكل عام ممارسة أمنية سيئة. في كثير من الأحيان ، يعمل phpMyAdmin على نفس الخادم مثل مثيل MySQL ، لذلك فإنه يتصل إما بعنوان المضيف المحلي (127.0.0.1) أو عبر ملف مقبس UNIX (وهو ما يقوم به phpMyAdmin).

داخل phpMyAdmin نفسه ، لا نقوم بتضمين أي طريقة لعكس أو إعادة توجيه الاتصالات الواردة مباشرة إلى MySQL لأن ذلك سيعرض MySQL تمامًا مثل فتح منفذ MySQL مباشرة على الإنترنت ، مرة أخرى فكرة سيئة للغاية. لهذا السبب فإن استخدام عنوان URL الخاص بـ phpMyAdmin نفسه لأن سلسلة الاتصال الخاصة بك لا تعمل. أنت محق في أنك تحتاج إلى عنوان IP للخادم (أو اسم المضيف) هنا بدلاً من ذلك.

بشكل عام ، لديك ثلاثة خيارات للاتصال بمثيل MySQL / MariaDB البعيد:

  1. تعريض المنفذ مباشرة (الذي أوصي ضده) ،
  2. استضافة تطبيقك مباشرة على الخادم والوصول إليه عن بُعد (كما هو الحال مع phpMyAdmin أو WordPress أو العديد من الأدوات الأخرى ، على الرغم من أنني لا أعرف ما إذا كان يمكن استخدام R بهذه الطريقة) ، أو
  3. كشف API على الخادم من خلال بعض التطبيقات المخصصة ، والتي تتم استضافتها على خادم MySQL ، والتي يمكن لتطبيقك المحلي الاتصال بها مباشرة.

للأسف ، لا يمكن لـ phpMyAdmin مساعدتك في أي من هؤلاء.

بادئ ذي بدء ، اسمحوا لي فقط أن أقول إنني أقدر حقًا جميع إجاباتك (لا سيما بالنظر إلى صدق سؤالي الأولي) وأنا أقدر بشكل خاص رد إسحاق - فقد كان مدروسًا ومفيدًا للغاية.

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

مرة أخرى، شكرا على وقتك.
بإخلاص،
ستيف

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات