عمل - MySQL: Grant** جميع** الامتيازات على قاعدة البيانات



الصلاحيات في sql server (7)

لقد قمت بإنشاء قاعدة بيانات ، على سبيل المثال 'mydb'.

CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;

الآن يمكنني تسجيل الدخول إلى قاعدة البيانات من كل مكان ، ولكن لا يمكنني إنشاء الجداول.

كيفية منح كل الامتيازات على قاعدة البيانات هذه والجداول (في المستقبل). لا أستطيع إنشاء جداول في قاعدة بيانات mydb. أحصل دائما:

CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'

https://ffff65535.com


1. إنشاء قاعدة البيانات

CREATE DATABASE db_name;

2. قم بإنشاء اسم المستخدم لقاعدة البيانات db_name

GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'localhost' IDENTIFIED BY 'password';

3. استخدم قاعدة البيانات

USE db_name;

4. وأخيرا كنت في قاعدة البيانات db_name ثم تنفيذ الأوامر مثل إنشاء وتحديد وإدراج العمليات.


تمكنت من جعله يعمل فقط من خلال إضافة GRANT OPTION ، دون أن يتم دائمًا تجاهل الخطأ الذي تم رفضه

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost' WITH GRANT OPTION;

للوصول من خادم بعيد إلى قاعدة بيانات mydb فقط

GRANT ALL PRIVILEGES ON mydb.* TO 'root'@'192.168.2.21';

للوصول من خادم بعيد إلى جميع قواعد البيانات.

GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.2.21';

لمنح جميع الامتيازات في قاعدة البيانات: mydb للمستخدم: myuser ، فقط نفذ:

GRANT ALL ON mydb.* TO 'myuser'@'localhost';

أو:

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';

كلمة PRIVILEGES ليست ضرورية.

أيضا لا أعرف لماذا تقترح الإجابات الأخرى أن يتم وضع IDENTIFIED BY 'password' في نهاية الأمر. أعتقد أنه غير مطلوب.


هذا SQL منح على جميع قواعد البيانات ولكن فقط الامتيازات الأساسية. إنها كافية لـ Drupal أو Wordpress وكصدق ، تسمح لحساب مطور واحد للمشاريع المحلية.

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, 
    INDEX, ALTER, CREATE TEMPORARY TABLES 
ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';

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

grant all privileges on mydb.* to [email protected]'%' identified by 'mypasswd';
grant all privileges on mydb.* to [email protected] identified by 'mypasswd';

% يبدو أنه لا يغطي اتصالات مأخذ التوصيل ، التي يكون localhost من أجلها. WITH GRANT OPTION هو جيد فقط للمستخدم الفائق ، وإلا فإنه عادة ما يكون مخاطرة أمنية.

أتمنى أن يساعدك هذا.


GRANT ALL PRIVILEGES ON mydb.* TO [email protected] IDENTIFIED BY 'mypasswd';

يعمل للحصول على امتيازات على المخطط :)

اختياري: بعد mypasswd يمكنك إضافة WITH GRANT OPTION





mysql-error-1142