কোনও বিদেশী কী সীমাবদ্ধতা পরিবর্তন করতে ন্যূনতম সুযোগ সুবিধা কী?


12

কোনও বিদেশী কী সীমাবদ্ধতা পরিবর্তন করতে ন্যূনতম সুযোগ সুবিধা কী?

MySQL 5.5.41 এই বাগটি ঠিক করার পরে আমার মাইগ্রেশন স্ক্রিপ্ট কাজ করা বন্ধ করে দিয়েছে :

  • InnoDB এমন একটি বিদেশী কী তৈরি করার অনুমতি দিয়েছে যা কোনও পিতামাতার সারণীতে রেফারেন্স দেয় যার জন্য ব্যবহারকারীর পর্যাপ্ত সুযোগ-সুবিধা নেই। (বাগ # 18790730)

আমি এই ত্রুটি পেয়েছি:

এসকিউএলস্টেট [৪২০০০]: সিনট্যাক্স ত্রুটি বা অ্যাক্সেস লঙ্ঘন: ১১৪৪ রেফারেন্সস কমান্ড ব্যবহারকারীকে 'foo' @ "স্থানীয়হোস্ট" টেবিল 'কোর.ইউসার্স' এর জন্য অস্বীকার করেছে (এসকিউএল: টেবিলের পরিবর্তন করুন `ব্যবহারকারী_বাজার` সীমাবদ্ধ ব্যবহারকারী_বাজার_উজার_আইডি_ফরাইইন বিদেশী কী (` ব্যবহারকারী_ আইডি) উল্লেখ cas core`.`users` (`id`) আপডেট ক্যাসকেডে ক্যাসকেড মুছে ফেলার জন্য)

যার অর্থ আমার সুবিধাগুলি ঠিক করা দরকার। আমার দরকার ন্যূনতম সুযোগ-সুবিধা কী?

উত্তর:


15

আপনার ভূমিকার জন্য আপনাকে "রেফারেন্স" সুবিধার্থ যুক্ত করতে হবে।


1
এই ধরণের "তাত্ত্বিক" জবাবটি অনুশীলনে বিশেষাধিকার কীভাবে যুক্ত করা যায় তা সম্পর্কে অতিরিক্ত গুগলিংয়ের জন্য নিয়ে আসে। @ ইউসির উত্তর দেখুন, যা সমস্ত প্রয়োজনীয় বিবরণ দেয়। এটি হ'লGRANT REFERENCES ON test.user_baz TO 'foo'@'localhost';
জন মেয়র

8
GRANT [type of permission] ON [database name].[table name] TO '[username]'@'[host name or IP address]';

উদাহরণ স্বরূপ:

GRANT REFERENCES ON test.user_baz TO 'foo'@'localhost';

1

প্রথমত, অন্য সমস্ত ব্যর্থ হলে ডকুমেন্টেশন (ব্যবহারের নোট বিভাগ) পড়ুন।

To use `ALTER TABLE`, you need `ALTER`, `CREATE` and `INSERT` privileges for the table. Note that the user (billy) granted these privileges cannot drop the table.

নীচে একটি উদাহরণ দেওয়া আছে।

mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |    <=== now root user
+----------------+
1 row in set (0.00 sec)

mysql> CREATE TABLE a(b VARCHAR(3) PRIMARY KEY); <=== Must be PK to be FK in another table.
Query OK, 0 rows affected (0.28 sec)

mysql> CREATE TABLE c(d VARCHAR(3), KEY c_ix (d));
Query OK, 0 rows affected (0.35 sec)

mysql> GRANT ALTER, CREATE, INSERT ON c TO billy;  <=== Privileges to billy
Query OK, 0 rows affected (0.00 sec)

mysql> exit;
Bye

logon as billy

[pol@localhost dbahelper-master]$ /mysql/5.7/inst/bin/mysql -S /mysql/5.7/inst/mysql.sock -u billy -pdba

mysql> use test;
Database changed
mysql> 
mysql> ALTER TABLE c ADD CONSTRAINT fk_c_a FOREIGN KEY (d) REFERENCES a(b);
Query OK, 0 rows affected (0.64 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> SHOW CREATE TABLE c;
| c     | CREATE TABLE `c` (
  `d` varchar(3) DEFAULT NULL,
  KEY `c_ix` (`d`),
  CONSTRAINT `fk_c_a` FOREIGN KEY (`d`) REFERENCES `a` (`b`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
mysql> 
mysql> drop table c;
ERROR 1142 (42000): DROP command denied to user 'billy'@'localhost' for table 'c'
mysql> 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.