উত্তর:
ব্যবহারকারী তৈরি করতে এটি চেষ্টা করুন:
CREATE USER 'user'@'hostname';
এটি ডাটাবেসে অ্যাক্সেস দেওয়ার জন্য চেষ্টা করুন dbTest
:
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
আপনি যদি একই মেশিনে মাইএসকিউএল অ্যাক্সেস কোড / সাইট চালাচ্ছেন তবে হোস্টনাম লোকালহোস্ট হবে।
এখন, ব্রেক ডাউন।
GRANT
- এটি ব্যবহারকারীকে তৈরি করতে এবং ডাটাবেস, টেবিল ইত্যাদির অধিকার প্রদানের জন্য ব্যবহৃত কমান্ড is
ALL PRIVILEGES
- এটি এটিকে জানায় যে ব্যবহারকারীর সমস্ত মানক সুবিধা থাকবে। এটি GRANT কমান্ডটি ব্যবহার করার অধিকারটি অন্তর্ভুক্ত করে না।
dbtest.*
- পুরো ডিবেস্ট ডাটাবেসে এই অধিকারগুলি প্রয়োগের জন্য এই মাইএসকিউএলকে নির্দেশ দেয়। আপনি চাইলে * নির্দিষ্ট টেবিলের নাম বা স্টোর রুটিন দিয়ে * প্রতিস্থাপন করতে পারেন।
TO 'user'@'hostname'
- 'ব্যবহারকারী' হ'ল আপনি যে ব্যবহারকারীর অ্যাকাউন্ট তৈরি করছেন তার ব্যবহারকারীর নাম। দ্রষ্টব্য: আপনার অবশ্যই সেখানে একক উদ্ধৃতি থাকতে হবে। 'হোস্টনেম' মাইএসকিউএলকে বলে যে ব্যবহারকারীর কাছ থেকে কী সংযোগ করতে পারে তা হোস্ট করে। আপনি যদি এটি একই মেশিন থেকে চান তবে ব্যবহার করুনlocalhost
IDENTIFIED BY 'password'
- আপনি যেমন অনুমান করেছিলেন, এটি সেই ব্যবহারকারীর জন্য পাসওয়ার্ড সেট করে।
মাইএসকিউএল / মারিয়াডিবি ৫.7..6 এবং উচ্চতরতে ব্যবহারকারী তৈরি করতে CREATE USER
সিনট্যাক্স ব্যবহার করুন :
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'new_password';
তারপরে ডাটাবেসে সমস্ত অ্যাক্সেস দেওয়ার জন্য (যেমন my_db
) GRANT
সিনট্যাক্স ব্যবহার করুন , যেমন
GRANT ALL ON my_db.* TO 'new_user'@'localhost';
কোথায় ALL
( priv_type ) নির্দিষ্ট বিশেষাধিকার যেমন সঙ্গে প্রতিস্থাপিত হতে পারে SELECT
, INSERT
, UPDATE
, ALTER
, ইত্যাদি
তারপরে নতুন বরাদ্দকৃত অনুমতিগুলি পুনরায় লোড করতে:
FLUSH PRIVILEGES;
উপরের কমান্ডগুলি চালনার জন্য আপনাকে mysql
কমান্ড চালাতে হবে এবং এগুলি প্রম্পটে টাইপ করতে হবে, তারপরে quit
আদেশ দ্বারা লগআউট বা Ctrl- D।
শেল থেকে চালানোর জন্য, -e
প্যারামিটারটি ব্যবহার করুন ( SELECT 1
উপরের একটি কমান্ডের সাথে প্রতিস্থাপন করুন ):
$ mysql -e "SELECT 1"
বা স্ট্যান্ডার্ড ইনপুট থেকে বিবৃতি মুদ্রণ:
$ echo "FOO STATEMENT" | mysql
যদি আপনি উপরের সাথে অ্যাক্সেস অস্বীকার পেয়ে থাকেন তবে -u
(ব্যবহারকারীর জন্য) এবং -p
(পাসওয়ার্ডের জন্য) পরামিতিগুলি নির্দিষ্ট করুন বা দীর্ঘমেয়াদী অ্যাক্সেসের জন্য আপনার শংসাপত্রগুলি সেট করুন ~/.my.cnf
, যেমন
[client]
user=root
password=root
মাইএসকিউএল সিনট্যাক্সের সাথে পরিচিত নয় এমন লোকদের জন্য, এখানে হ্যান্ডেল শেল ফাংশনগুলি রয়েছে যা মনে রাখা এবং ব্যবহার করা সহজ (সেগুলি ব্যবহার করার জন্য, আপনাকে আরও নীচে অন্তর্ভুক্ত শেল ফাংশনগুলি লোড করতে হবে)।
এখানে উদাহরণ:
$ mysql-create-user admin mypass
| CREATE USER 'admin'@'localhost' IDENTIFIED BY 'mypass'
$ mysql-create-db foo
| CREATE DATABASE IF NOT EXISTS foo
$ mysql-grant-db admin foo
| GRANT ALL ON foo.* TO 'admin'@'localhost'
| FLUSH PRIVILEGES
$ mysql-show-grants admin
| SHOW GRANTS FOR 'admin'@'localhost'
| Grants for admin@localhost
| GRANT USAGE ON *.* TO 'admin'@'localhost' IDENTIFIED BY PASSWORD '*6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4' |
| GRANT ALL PRIVILEGES ON `foo`.* TO 'admin'@'localhost'
$ mysql-drop-user admin
| DROP USER 'admin'@'localhost'
$ mysql-drop-db foo
| DROP DATABASE IF EXISTS foo
উপরের কমান্ডগুলি ব্যবহার করার জন্য, আপনাকে নীচের ফাংশনগুলি অনুলিপি করে আপনার আরসি ফাইলটিতে আটকানো প্রয়োজন (উদাঃ .bash_profile
) এবং আপনার শেল বা উত্স ফাইলটি পুনরায় লোড করুন। এই ক্ষেত্রে কেবল টাইপ করুন source .bash_profile
:
# Create user in MySQL/MariaDB.
mysql-create-user() {
[ -z "$2" ] && { echo "Usage: mysql-create-user (user) (password)"; return; }
mysql -ve "CREATE USER '$1'@'localhost' IDENTIFIED BY '$2'"
}
# Delete user from MySQL/MariaDB
mysql-drop-user() {
[ -z "$1" ] && { echo "Usage: mysql-drop-user (user)"; return; }
mysql -ve "DROP USER '$1'@'localhost';"
}
# Create new database in MySQL/MariaDB.
mysql-create-db() {
[ -z "$1" ] && { echo "Usage: mysql-create-db (db_name)"; return; }
mysql -ve "CREATE DATABASE IF NOT EXISTS $1"
}
# Drop database in MySQL/MariaDB.
mysql-drop-db() {
[ -z "$1" ] && { echo "Usage: mysql-drop-db (db_name)"; return; }
mysql -ve "DROP DATABASE IF EXISTS $1"
}
# Grant all permissions for user for given database.
mysql-grant-db() {
[ -z "$2" ] && { echo "Usage: mysql-grand-db (user) (database)"; return; }
mysql -ve "GRANT ALL ON $2.* TO '$1'@'localhost'"
mysql -ve "FLUSH PRIVILEGES"
}
# Show current user permissions.
mysql-show-grants() {
[ -z "$1" ] && { echo "Usage: mysql-show-grants (user)"; return; }
mysql -ve "SHOW GRANTS FOR '$1'@'localhost'"
}
দ্রষ্টব্য: আপনি যদি আপনার বাশ ইতিহাসে ট্রেস (যেমন পাসওয়ার্ড) না রেখে পছন্দ করেন তবে চেক করুন: বাশ ইতিহাসে কমান্ডগুলি প্রদর্শন করতে কীভাবে প্রতিরোধ করবেন?
~/.my.cnf
উপরের পরামর্শ অনুসারে এটিতে যুক্ত করেন ।
মাইএসকিউএল এ লগ ইন করুন:
mysql -u root
এখন তৈরি এবং অনুদান
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
পর্যায়ক্রমে, আপনি যদি কেবল কোনও ডাটাবেসে সম্পূর্ণ সীমাহীন অ্যাক্সেস দিতে চান (যেমন পরীক্ষার জন্য স্থানীয় মেশিনে, আপনি বেনামে ব্যবহারকারীর অ্যাক্সেস দিতে পারেন, যেমন:
GRANT ALL PRIVILEGES ON dbTest.* To ''@'hostname'
এটি বিকাশের জাঙ্ক ডেটার জন্য সূক্ষ্ম। আপনার পছন্দের যে কোনও জিনিস দিয়ে এটি করবেন না।
$ mysql -u root -p -e "grant all privileges on dbTest.* to
`{user}`@`{host}` identified by '{long-password}'; flush privileges;"
-p বিকল্পটি উপেক্ষা করুন , যদি মাইএসকিএল ব্যবহারকারীর কোনও পাসওয়ার্ড না থাকে বা কেবল "[এন্টার]" বাটনটি পাস করতে টিপুন। কোঁকড়া ধনুর্বন্ধনী দিয়ে ঘেরা স্ট্রিংগুলির প্রকৃত মানগুলির সাথে প্রতিস্থাপন করা দরকার।
আপনি তৈরি করুন ব্যবহারকারী বিবৃতি ব্যবহার করে নতুন ব্যবহারকারী তৈরি করতে এবং গ্রান্ট ব্যবহার করে তাদের অধিকার দিতে পারেন ।
আমার কাছে এটি কাজ করেছে
CREATE USER 'spowner'@'localhost' IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES ON test.* To 'spowner'@'localhost';
FLUSH PRIVILEGES;
কোথায়
আপনি যদি কোনও নতুন ব্যবহারকারী তৈরি করতে চান তবে নীচের কমান্ডটি কাজ করবে যদি আপনার লোকালহোস্টের নির্দিষ্ট ডেটাবেসগুলিতে (আপনার মাইএসকিএলের সমস্ত ডাটাবেস নয়) সমস্ত অ্যাক্সেস দেয়।
GRANT ALL PRIVILEGES ON test_database.* TO 'user'@'localhost' IDENTIFIED BY 'password';
এটি লোকালহোস্টের সেই ব্যবহারকারীকে একটি ডেটাবেজে test_database
(আপনার ক্ষেত্রে dbTest
) সমস্ত সুযোগ-সুবিধা দেয় grant
উপরের কমান্ডটি নীচের কমান্ডটি চালিয়ে যে ব্যবহারকারীকে কী অনুমতি দিয়েছে তা পরীক্ষা করে দেখুন।
SHOW GRANTS FOR 'user'@'localhost'
কেবলমাত্র যদি আপনি কেবল একটি একক টেবিলের মধ্যে ব্যবহারকারীর অ্যাক্সেস সীমাবদ্ধ করতে চান
GRANT ALL ON mydb.table_name TO 'someuser'@'host';