রুট ব্যবহারকারী ব্যতীত ব্যবহারকারীর 'পরীক্ষা' @ 'লোকালহোস্ট' (পাসওয়ার্ড ব্যবহার: YES) এর জন্য অ্যাক্সেস অস্বীকার করা হয়েছে


102

আমি মাইএসকিএল নন রুট / অ্যাডমিন ব্যবহারকারীদের সাথে সমস্যার মুখোমুখি হয়েছি, ব্যবহারকারী এবং এর সুবিধার্থে তৈরি করার জন্য আমি নীচের পদক্ষেপগুলি অনুসরণ করছি, যদি আমি ভুল করে চলেছি তবে আমাকে সংশোধন করুন,

আমি ইনস্টল করছি mysqlউপর RHEL 5.7 64bit, প্যাকেজ নিচে উল্লেখ করা হয়, একবার আমি করেছি rpm installআমরা

  1. MySQL ডিবি ব্যবহার করে তৈরি করা mysql_install_db, তারপর
  2. তখন mysql পরিষেবাটি শুরু করা then
  3. mysql_upgradeএছাড়াও ব্যবহার করে আমরা সার্ভারে করছি।

এই প্রক্রিয়াটির পরে আমি লগইন করতে পারি rootতবে একটি মূল-বিহীন ব্যবহারকারীর সাথে আমি সার্ভারে লগ ইন করতে সক্ষম নই:

[root@clustertest3 ~]# rpm -qa | grep MySQL
MySQL-client-advanced-5.5.21-1.rhel5
MySQL-server-advanced-5.5.21-1.rhel5


[root@clustertest3 ~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[root@clustertest3 ~]# ls -ld /var/lib/mysql/mysql.sock
srwxrwxrwx 1 mysql mysql 0 Nov  30 11:09 /var/lib/mysql/mysql.sock

mysql> CREATE USER 'golden'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT USER(),CURRENT_USER();
+----------------+----------------+
| USER()         | CURRENT_USER() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
1 row in set (0.00 sec)

[root@clustertest3 ~]# mysql -ugolden -p
Enter password:
ERROR 1045 (28000): Access denied for user 'golden'@'localhost' (using password: YES)

এই যে সমস্যার মুখোমুখি হচ্ছি, এর কি কোনও সমাধান আছে?


আপনি কি রুট হিসাবে লগইন করতে পারেন এবং তারপরেSELECT * FROM mysql.user
নোম রাঠাস

4
আপনার পক্ষে কাজ করা উত্তরটি গ্রহণ করুন, সুতরাং অন্যান্য ব্যবহারকারীরা জানেন যে আপনি কীভাবে আপনার সমস্যার সমাধান করেছেন।
ব্যবহারকারী যা

উত্তর:


60

কোনও রুটহীন ব্যবহারকারীকে সমস্ত ডেটাবেজে সমস্ত সুযোগ প্রদান করবেন না, এটি নিরাপদ নয় (এবং আপনার ইতিমধ্যে সেই ভূমিকাটি সহ "রুট" রয়েছে)

GRANT <privileges> ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';

এই বিবৃতিটি একটি নতুন ব্যবহারকারী তৈরি করে এবং এতে নির্বাচিত সুবিধাদি মঞ্জুরি দেয়। আইই:

GRANT INSERT, SELECT, DELETE, UPDATE ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password';

সমস্ত সুযোগ-সুবিধাগুলি বিশদ দেখতে ডক্সে একবার দেখুন

সম্পাদনা: আপনি এই প্রশ্নের সাথে আরও তথ্যের সন্ধান করতে পারেন ("মূল" হিসাবে লগ ইন করুন):

select Host, User from mysql.user;

কী হয়েছে তা দেখার জন্য


আমি মূল সম্পর্কে যে বিবৃতি সঙ্গে একমত। হ্যাঁ, উইলির নিলির বাইরে আপনার কোনও বিশেষ সুযোগ দেওয়া উচিত নয়। তবে আপনারও সাধারণত ভাগ করা অ্যাকাউন্টগুলি ব্যবহার করা উচিত নয় কারণ আপনার ডিবিতে কোনও সঠিক নিরীক্ষণের ট্রেইল নেই। যদি আপনার অবশ্যই রুটের মতো অ্যাকাউন্টগুলি ভাগ করে নেওয়া থাকে তবে নিরীক্ষণের পথটি অক্ষত রয়েছে তা নিশ্চিত করার জন্য আপনার চারপাশে অন্যান্য জিনিস মোড়ানো দরকার।
krad

37

আপনি যদি রিমোট মেশিন (উদাহরণস্বরূপ ওয়ার্কব্যাঞ্চ) ব্যবহার করে মাইএসকিউএলে সংযোগ করছেন তবে মাইএসকিউএল ইনস্টল থাকা ওএসে এই ত্রুটিটি দূর করার জন্য নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করুন

mysql -u root -p

CREATE USER '<<username>>'@'%%' IDENTIFIED BY '<<password>>';
GRANT ALL PRIVILEGES ON * . * TO '<<username>>'@'%%';
FLUSH PRIVILEGES;

MYSQL দৃষ্টান্তটিতে লগ ইন করার চেষ্টা করুন Try
এই ত্রুটিটি দূর করার জন্য এটি আমার পক্ষে কাজ করেছিল।


4
এমনকি এটি কাজ করছে না, যেমনটি "
মাইএসকিএল-ইউ-

26

চেষ্টা করুন:

CREATE USER 'golden'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'golden'@'localhost';
FLUSH PRIVILEGES;

অথবা আরও ভাল ব্যবহার: mysql_setpermissionব্যবহারকারী তৈরি করতে


4
এটি সমস্যার সমাধান করে না। ব্যবহারকারীর 'সোনালী' @ '%' পরিচয় 'কিছু_পাস' দ্বারা তৈরি করুন; বৈধ কোয়েরি
pramit_b

কোনও কারণে তার %যা সমস্ত হোস্টের পক্ষে কাজ করা উচিত, তা সমাধান করছে না। সুতরাং নির্দিষ্ট করে localhostএটি কাজ করা উচিত। যদি এটি কাজ না করে তবে মাইএসকিএল-তে কিছু বন্ধ রয়েছে
নোম রাঠাস

14

দেখে মনে হচ্ছে আপনি কোনও ব্যবহারকারীকে 'সোনালি' @ '%' বানানোর চেষ্টা করছেন তবে 'সোনার' @ 'লোকালহোস্ট' নামে একটি পৃথক ব্যবহারকারী যেভাবে পাচ্ছেন / তার প্রাধান্য পেয়েছে।

ব্যবহারকারীদের দেখতে এই আদেশটি করুন:

SELECT user,host FROM mysql.user;

আপনার দুটি এন্ট্রি দেখতে হবে:

1) ব্যবহারকারী = সুবর্ণ, হোস্ট =%

2) ব্যবহারকারী = সুবর্ণ, হোস্ট = লোকালহোস্ট

এই আদেশটি করুন:

DROP User 'golden'@'localhost';
DROP User 'golden'@'%';

মাইএসকিউএল ওয়ার্কবেঞ্চ পুনরায় চালু করুন।

তারপরে আপনার মূল আদেশগুলি আবার করুন:

CREATE USER 'golden'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%';

তারপরে আপনি যখন মাইএসকিউএল-এ সাইন ইন করার চেষ্টা করতে যান, এটিকে এটি টাইপ করুন:

এখানে চিত্র বর্ণনা লিখুন

'টেস্ট সংযোগ' টিপুন এবং আপনার পাসওয়ার্ডের 'পাসওয়ার্ড' লিখুন।


4
আমি এখানে একমাত্র সমাধানটি পেয়েছি যার কিছু তাত্পর্য ছিল। আপনাকে ধন্যবাদ স্যার।
সুমুক শশীধর

8

প্রথমে আমি ব্যবহার করে ব্যবহারকারী তৈরি করেছি:

CREATE user user@localhost IDENTIFIED BY 'password_txt';

অনুসন্ধানের এবং পরে এইজন্য এই , আমি ব্যবহার ব্যবহারকারীর পাসওয়ার্ড আপডেট করা হয়েছে:

SET PASSWORD FOR 'user'@'localhost' = PASSWORD('password_txt');

এবং আমি পরে সংযোগ করতে পারে।


3

অন্য কারও জন্য যারা সমস্ত পরামর্শ দিয়েছিলেন তবে সমস্যাটি এখনও অবিরত রয়েছে।

সঞ্চিত প্রক্রিয়া পরীক্ষা করুন এবং ডিফলারগুলি দেখুন। এই নির্ধারকগুলির আর অস্তিত্ব থাকতে পারে।

যখন আমরা ওয়াইল্ডকার্ড হোস্টকে (%) আইপি নির্দিষ্ট করে পরিবর্তন করেছি তখন ডেটাবেসটিকে আরও সুরক্ষিত করে তুললে আমার সমস্যাটি দেখা গেল। দুর্ভাগ্যক্রমে এমন কিছু মতামত রয়েছে যা ব্যবহারকারীর @ @ '%' ব্যবহার করছে যদিও 'ব্যবহারকারী' @ '172 ....' প্রযুক্তিগতভাবে সঠিক।


আমাকে সঠিক পথে পৌঁছে দেওয়ার জন্য ধন্যবাদ এমনকি ভিউ এবং সঞ্চিত পদ্ধতিতে এসকিউএল সুরক্ষা সেটিং সম্পর্কে আমি জানতাম না। আমি আমার ভিউগুলিতে ইনভোকারকে এসকিউএল সুরক্ষা সেট আপ করেছিলাম যাতে এটি দৃশ্যের তৈরি ব্যবহারকারীর চেয়ে কমান্ড কার্যকরকারী ব্যবহারকারীর অনুমতি ব্যবহার করে। এখানে রেফারেন্সের জন্য একটি লিঙ্ক দেওয়া হয়েছে: dev.mysql.com/doc/refman/5.7/en/stored-program-security.html
জাস্টিন

2

আমারও একই রকম সমস্যা রয়েছে এবং পরে আমি এটি দেখতে পেয়েছি কারণ আমি আমার হোস্টনামটি পরিবর্তন করেছি (না localhost)।

সুতরাং আমি এটি নির্দিষ্ট করে সমাধান করেছি resolved --host=127.0.0.1

mysql -p mydatabase --host=127.0.0.1

2

আপনি যেভাবে আপনার ব্যবহারকারী তৈরি করবেন, সেই অনুযায়ী মাইএসকিউএল অন্যরকমভাবে ব্যাখ্যা করে। উদাহরণস্বরূপ, আপনি যদি কোনও ব্যবহারকারী তৈরি করেন:

create user user01 identified by 'test01';

মাইএসকিউএল আশা করে আপনি ব্যবহার করে কিছু সুবিধা দিয়েছেন grant all on <your_db>.* to user01;

ভুলে যাবেন না flush privileges;

তবে, আপনি যদি এর মতো ব্যবহারকারী তৈরি করেন (কোনও আইপি ঠিকানা দিয়ে), আপনাকে এটিতে পরিবর্তন করতে হবে:

create user 'user02'@'localhost' identified by 'teste02';

সুতরাং, কিছু সুযোগ সুবিধার্থে আপনাকে তা করতে হবে:

grant all on <your_db>.* to user02@localhost;
flush privileges;

2

ব্যবহারকারীদের সারণীতে লোকালহোস্ট এন্ট্রি রয়েছে তা নিশ্চিত করুন sure আমার এই সমস্যাটি ছিল। প্রাক্তন:

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

1

বিরক্তিকর অনুসন্ধানের জন্য এই ত্রুটি বার্তার সন্ধানের পরে এখানে আসার জন্য:

ব্যবহারকারীর 'সামুজার @ কোথাও' অ্যাক্সেস অস্বীকার করা হয়েছে (পাসওয়ার্ড ব্যবহার করে: হ্যাঁ)

আমার পক্ষে বিষয়টি পাসওয়ার্ডটি উদ্ধৃত করে দেওয়া হয়নি। যেমন আমার -p'password'পরিবর্তে ব্যবহার করা দরকার-ppassword


0

আমার ক্ষেত্রে একই ত্রুটি ঘটে কারণ আমি "mysql -u root -p" এর পরিবর্তে "mysql" টাইপ করে mysql ব্যবহার করার চেষ্টা করছিলাম


0

mysqlworkbench থেকে আপনার সার্ভারটি সংযুক্ত করুন এবং এই কমান্ডটি চালান -> 'আপনারপাসওয়ার্ড' এর মাধ্যমে ব্যবহারকারী 'রুট' @ 'লোকালহোস্ট' সনাক্ত করুন;


-8

হোস্টনেম বা মাইএসকিউএল হোস্ট ঠিকানায় 'লোকালহোস্ট' এর পরিবর্তে কম্পিউটারের নাম যুক্ত করুন।

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