it-swarm.asia

منح ** جميع ** الامتيازات في قاعدة البيانات

لقد قمت بإنشاء قاعدة بيانات ، على سبيل المثال "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'
575
marioosh
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;

هذه هي الطريقة التي أقوم بها بإنشاء امتيازات "المستخدم الفائق" (على الرغم من أنني عادةً ما أقوم بتحديد مضيف).

ملاحظة مهمة

في حين أن هذه الإجابة يمكن أن تحل مشكلة الوصول ، فإن WITH GRANT OPTION تنشئ مستخدم MySQL يمكنه تحرير أذونات المستخدمين الآخرين .

يمكّنك امتياز GRANT OPTION من منح المستخدمين الآخرين أو إزالة الامتيازات التي تمتلكها أنت بنفسك من مستخدمين آخرين.

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

857
diagonalbatman

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

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 مفيد فقط للمستخدم الفائق ، وإلا فإنه عادة ما يكون مخاطرة أمنية.

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

497
akostadinov

سيكون هذا مفيدًا لبعض الأشخاص:

من سطر الأوامر MySQL:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

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

لذلك ، فإن أول ما يجب فعله هو تزويد المستخدم بالوصول إلى المعلومات التي يحتاجها.

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

تشير العلامات النجمية في هذا الأمر إلى قاعدة البيانات والجدول (على التوالي) التي يمكنهم الوصول إليها - يسمح هذا الأمر المحدد للمستخدم بقراءة جميع المهام وقواعد البيانات وتعديلها وتنفيذها وتنفيذها.

بمجرد الانتهاء من الأذونات التي تريد إعدادها للمستخدمين الجدد ، تأكد دائمًا من إعادة تحميل جميع الامتيازات.

FLUSH PRIVILEGES;

ستكون تغييراتك الآن سارية المفعول.

لمزيد من المعلومات: http://dev.mysql.com/doc/refman/5.6/en/grant.html

إذا لم تكن مرتاحًا لسطر الأوامر ، فيمكنك استخدام عميل مثل منضدة عمل MySQL ، Navicat أو SQLyog

109
user3008525

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 ثم قم بتنفيذ الأوامر مثل عمليات إنشاء وتحديد وإدراج عمليات.

28
Bhavnesh

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

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, 
    INDEX, ALTER, CREATE TEMPORARY TABLES 
ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
20
s6712
GRANT ALL PRIVILEGES ON mydb.* TO [email protected] IDENTIFIED BY 'mypasswd';

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

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

14
Dutch Glory

مرحبًا ، لقد استخدمت هذا الرمز لجعل المستخدم فائقًا في mysql

GRANT EXECUTE, PROCESS, SELECT, SHOW DATABASES, SHOW VIEW, ALTER, ALTER ROUTINE,
    CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP,
    EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, CREATE USER, FILE,
    LOCK TABLES, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SHUTDOWN,
    SUPER
        ON *.* TO [email protected]'%'
    WITH GRANT OPTION;

وثم

FLUSH PRIVILEGES;
12
gastonnina

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

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

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

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

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

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

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

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

أو:

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

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

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

1
pgmank