আমি মাইএসকিউএল কমান্ড লাইন ইউটিলিটি ব্যবহার করছি এবং একটি ডাটাবেস মাধ্যমে নেভিগেট করতে পারেন। এখন আমার ব্যবহারকারীর অ্যাকাউন্টগুলির একটি তালিকা দেখতে হবে। কিভাবে আমি এটি করতে পারব?
আমি মাইএসকিউএল সংস্করণ ব্যবহার করছি 5.4.1
।
আমি মাইএসকিউএল কমান্ড লাইন ইউটিলিটি ব্যবহার করছি এবং একটি ডাটাবেস মাধ্যমে নেভিগেট করতে পারেন। এখন আমার ব্যবহারকারীর অ্যাকাউন্টগুলির একটি তালিকা দেখতে হবে। কিভাবে আমি এটি করতে পারব?
আমি মাইএসকিউএল সংস্করণ ব্যবহার করছি 5.4.1
।
উত্তর:
এই প্রশ্নটি ব্যবহার করুন:
SELECT User FROM mysql.user;
যা এর মতো একটি টেবিল আউটপুট দেবে:
+-------+
| User |
+-------+
| root |
+-------+
| user2 |
+-------+
ম্যাথু শার্লে এই উত্তরের মন্তব্যে যেমন উল্লেখ করেছেন , আপনি User
যদি অনন্য ব্যবহারকারীর নাম দেখতে চান তবে আপনি কলাম অনুসারে গ্রুপ করতে পারেন ।
User
যে কেবলমাত্র অনন্য ব্যবহারকারীর মানগুলি অর্জন করার জন্য, এছাড়াও খুব বেশি গ্রুপিং করা প্রয়োজন, যেহেতু প্রতিটি user
@ host
এন্ট্রির জন্য পৃথক সারি রয়েছে ।
DELETE FROM mysql.user;
আরও ভাল আছে WHERE user='someuser' and host='somehost';
যদি আপনি এটি করেন তবে DELETE FROM mysql.user;
সমস্ত ব্যবহারকারী চলে গেছে। পরবর্তী মাইএসকিএল-এর পরে লগইনগুলি FLUSH PRIVILEGES;
ব্যবহারকারীদের মেমরি থেকে পুনঃসূচনা করতে বা মুছে ফেলার জন্য । DELETE FROM mysql.user
দায়িত্বের সাথে করার বিষয়ে আমার পোস্টগুলির একটি উদাহরণ এখানে রয়েছে : dba.stackexchange.com/questions/4614/…
SHOW GRANTS FOR 'user'@'host';
DISTINCT
কীওয়ার্ডটি ব্যবহার করতে পারেন :SELECT DISTINCT user FROM mysql.user;
আমি এই ফর্ম্যাটটিকে সবচেয়ে দরকারী বলে মনে করি এটিতে হোস্ট ফিল্ড অন্তর্ভুক্ত যা ব্যবহারকারীর রেকর্ডগুলির মধ্যে পার্থক্য করতে মাইএসকিউএলে গুরুত্বপূর্ণ।
select User,Host from mysql.user;
host
মাইএসকিএল ডাটাবেসগুলির সাথে কাজ করার সময় এটি কখন আসবে? [
host
আপনি যখন অন্য কোনও সার্ভার থেকে সংযোগ করছেন তখন @ প্যাকারটি খেলতে আসবে। এর পক্ষে বিভিন্ন অ্যাক্সেস দেওয়া সম্ভব 'packer'@'example.com'
এবং'packer'@'google.com'
একটি ব্যবহারকারীর অ্যাকাউন্টে ব্যবহারকারীর নাম এবং হোস্ট স্তরের অ্যাক্সেস থাকে।
অতএব, এটি এমন ক্যোয়ারী যা সমস্ত ব্যবহারকারীর অ্যাকাউন্ট দেয়
SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;
user@host
ফর্ম্যাটটি পাসওয়ার্ড সেট করার জন্য ব্যবহৃত হয়। SET PASSWORD
কমান্ড থেকে হোস্টকে ছাড় দেওয়া একটি ত্রুটি তৈরি করে। SET PASSWORD FOR wordpressuser = PASSWORD('...');
ত্রুটি উত্পাদন করে ERROR 1133 (42000): Can't find any matching row in the user table
। হোস্টটি অন্তর্ভুক্ত করুন এবং এটি কাজ করে। SET PASSWORD FOR wordpressuser@localhost = PASSWORD('...');
উত্পাদন Query OK, 0 rows affected (0.00 sec)
।
ORDER BY user
এটির জন্য এটি যুক্ত করা হয়েছিল ।
ব্যবহারকারীরা যখন বিভিন্ন উত্স থেকে সংযুক্ত হন তাদের পুনরাবৃত্তি এড়াতে:
select distinct User from mysql.user;
মাইএসকিউএল তার নিজস্ব ডাটাবেসে ব্যবহারকারীর তথ্য সংরক্ষণ করে। ডাটাবেসের নাম MySQL
। সেই ডাটাবেসের ভিতরে, ব্যবহারকারীর তথ্য একটি টেবিলের মধ্যে থাকে, একটি ডেটাসেট নামে থাকে user
। আপনি যদি মাইএসকিউএল ব্যবহারকারী সারণিতে ব্যবহারকারীদের সেট আপ করা হয় তা দেখতে চাইলে নিম্নলিখিত কমান্ডটি চালান:
SELECT User, Host FROM mysql.user;
+------------------+-----------+
| User | Host |
+------------------+-----------+
| root | localhost |
| root | demohost |
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| | % |
+------------------+-----------+
SELECT * FROM mysql.user;
এটি একটি বড় টেবিল যাতে আপনি কোন ক্ষেত্রগুলি বেছে নিচ্ছেন সে সম্পর্কে আপনি আরও নির্বাচনী হতে চান।
localhost
, 127.0.0.1
এবং ::1
। আমার কোনটি অবশ্যই রাখা উচিত এবং আমার কী মুছতে হবে? ধন্যবাদ!
রুট হিসাবে mysql এ লগইন করুন এবং নিম্নলিখিত কোয়েরি টাইপ করুন
select User from mysql.user;
+------+
| User |
+------+
| amon |
| root |
| root |
+------+
GRANT SELECT ON mysql.user TO 'user1'@'localhost';
এখন ইউজার 1 হিসাবে লগইন করুন এবং কমান্ড টাইপ করুন select User from mysql.user;
আপনি দেখতে পাবেন ব্যবহারকারী তালিকা প্রদর্শিত হবে। :) +1 উপভোগ করুন
Mysql.db সারণি ব্যবহারকারীর অধিকার নির্ধারণের ক্ষেত্রে সম্ভবত আরও গুরুত্বপূর্ণ। আমি মনে করি আপনি যদি GRANT কমান্ডের কোনও সারণির উল্লেখ করেন তবে এতে একটি এন্ট্রি তৈরি করা হয়েছে। আমার ক্ষেত্রে যখন mysql.users সারণীটি ব্যবহারকারীর জন্য স্পষ্টতই সংযোগ স্থাপন এবং নির্বাচন করতে সক্ষম হয় ইত্যাদি কোনও অনুমতি দেখায় না etc.
mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Del...
আমি এটি ব্যবহারকারীদের বাছাই করতে ব্যবহার করি, সুতরাং অনুমতিপ্রাপ্ত হোস্টগুলি স্পট করা আরও সহজ:
mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;
পিটার এবং জেসি সঠিক তবে কেবল আপনি প্রথমে মাইএসকিএল ডিবি নির্বাচন করেছেন তা নিশ্চিত করুন।
use mysql;
select User from mysql.user;
এটি আপনার কৌশল করা উচিত
use mysql;
আপনার মতো মাইএসকিএল ডাটাবেসে টেবিলটি স্কোপ করার ক্ষেত্রে এটি প্রয়োজনীয় নয় । আপনি ঠিক করতে পারেনselect User from mysql.user;
use mysql;
করা ঠিক তাই আপনি select User from user;
পরিবর্তে select User from mysql.user;
এটি ব্যবহার করতে পারেন যেহেতু এটি সাধারণত এককালীন ক্যোয়ারী হয়, তাই মাইএসকিএল ডিবি ব্যবহার করার দরকার নেই
use mysql
যদি আপনি ব্যবহার করেছিল select user from user;
যে এর চেয়ে কিছু হয়ে থাকতে পারে, কিন্তু এর পরিবর্তে আপনি ব্যবহার করছেন mysql.user
, যা ব্যবহার করে তোলে use mysql
অপ্রয়োজনীয় প্রারম্ভে।
এটি অনন্য ব্যবহারকারীর তালিকা প্রদর্শন করে:
SELECT DISTINCT User FROM mysql.user;
$> mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt
লিনাক্স প্রম্পটে এই কমান্ডটি প্রয়োগ করা হলে প্রথমে মাইএসকিএল রুট ব্যবহারকারীর পাসওয়ার্ড জিজ্ঞাসা করা হবে, সঠিক পাসওয়ার্ড দেওয়ার পরে এটি সমস্ত ডাটাবেস ব্যবহারকারীদের পাঠ্য ফাইলে মুদ্রণ করবে।
আমি তার আরও একটি দরকারী হিসাবে এটি ডিএমএল এবং ডিডিএল সুবিধাগুলি সম্পর্কে অতিরিক্ত তথ্য সরবরাহ করে
SELECT user, Select_priv, Insert_priv , Update_priv, Delete_priv,
Create_priv, Drop_priv, Shutdown_priv, Create_user_priv
FROM mysql.user;
SELECT User FROM mysql.user;
মাইএসকিএল ব্যবহারকারীদের পেতে উপরের প্রশ্নটি ব্যবহার করুন