mysql উপস্থিত না থাকলে ব্যবহারকারী তৈরি করুন


95

নতুন ব্যবহারকারী তৈরি করার জন্য মাইএসকিএল ব্যবহারকারীদের তালিকা পরীক্ষা করতে আমার কাছে একটি প্রশ্ন রয়েছে।

IF (SELECT EXISTS(SELECT 1 FROM `mysql`.`user` WHERE `user` = '{{ title }}')) = 0 THEN
    CREATE USER '{{ title }}'@'localhost' IDENTIFIED BY '{{ password }}'
END IF;

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

ERROR 1064 (42000) at line 3: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF (SELECT EXISTS(SELECT 1 FROM `mysql`.`user` WHERE `user` = 'cms_localhost')) = 0 ' at line 1

উত্তর:


281

7.7.। এবং তারপরে আপনার ব্যবহার করতে সক্ষম হওয়া উচিত CREATE USER

CREATE USER IF NOT EXISTS 'user'@'localhost' IDENTIFIED BY 'password';

মনে রাখবেন যে 5.7.6 পদ্ধতিটি আসলে কোনও অনুমতি দেয় না।


যদি আপনি এমন কোনও সংস্করণ ব্যবহার করেন না যার এই ক্ষমতাটি রয়েছে (5.7.6 এর নীচে কিছু) তবে আপনি নিম্নলিখিতটি করতে পারেন:

GRANT ALL ON `database`.* TO 'user'@'localhost' IDENTIFIED BY 'password';

এটি ব্যবহারকারীর উপস্থিতি না থাকলে এটি তৈরি করবে


দ্রষ্টব্য, আপনি মাইএসকিউএল 8 এ থাকলে, GRANT ALLপদ্ধতিটি কোনও ব্যবহারকারী তৈরি করবে না।


4
যদি ব্যবহারকারীটি উপস্থিত থাকে এবং তার একটি আলাদা পাসওয়ার্ড থাকে তবে এটি কি পাসওয়ার্ডটি পরিবর্তন করে?
m3z

5
কিছু নয় - আমার নিজের প্রশ্নের উত্তর দিয়েছে - হ্যাঁ এটি করে - তবে
হোস্টটি

4
@ m3z প্রযুক্তিগতভাবে, আপনার যদি ব্যবহারকারী থাকে যা দুটি পৃথক হোস্টে লগ ইন করতে পারে তবে তারা একই ব্যবহারকারী নয়। তাদের বিভিন্ন অনুমতি, বিভিন্ন পাসওয়ার্ড এবং সব কিছু থাকতে পারে।
Ascherer

4
হ্যাঁ @ ভূগর্ভ, তবে এটি সুরক্ষা গর্ত ছেড়ে দেয়। সচেতন থাকা.
Ascherer

4
আপনি কেবলমাত্র বি বি 166 ইআর পাসওয়ার্ড নির্দিষ্ট না করলে এটি কেবল অনিরাপদ, যা .... ডু।
Ascherer

-3

আমি ব্যবহার করি

নির্বাচন বিদ্যমান (স্বতন্ত্র নির্বাচন userথেকে mysqluserকোথায় user= "ব্যবহারকারীর নাম") is_user যেমন

উপস্থিত থাকলে 1 বা এটি না থাকলে 0 প্রদান করা উচিত


4
প্রশ্নটি কীভাবে চেক করবেন তা নয়, তবে কীভাবে তৈরি করবেন
ভ্ল্যাডএল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.