रूट उपयोगकर्ता को छोड़कर उपयोगकर्ता के 'टेस्ट' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग करना: YES) के लिए पहुँच से वंचित होना


100

मैं mysql गैर रूट / व्यवस्थापक उपयोगकर्ता के साथ समस्या का सामना कर रहा हूं, मैं उपयोगकर्ता और इसके विशेषाधिकार बनाने के लिए नीचे दिए गए चरणों का पालन कर रहा हूं, अगर मैं गलत कर रहा हूं तो मुझे सही करें,

मैं स्थापित mysqlकर रहा हूं RHEL 5.7 64bit, पैकेज नीचे दिए गए हैं, एक बार जब rpm installहम कर चुके हैं

  1. mysql db का उपयोग करके mysql_install_db, तब बनाना
  2. तब mysql सेवा शुरू करना
  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
Noam Rathaus

1
आपके लिए काम करने वाले उत्तर को स्वीकार करें, इसलिए अन्य उपयोगकर्ता जानते हैं कि आपने अपनी समस्या को कैसे हल किया।
उपयोगकर्ता जो

जवाबों:


59

एक गैर-रूट उपयोगकर्ता के लिए सभी डेटाबेस पर सभी विशेषाधिकार प्रदान न करें, यह सुरक्षित नहीं है (और आपके पास पहले से ही उस भूमिका के साथ "जड़" है)

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;

यह देखने के लिए कि क्या हुआ


मैं रूट के उस बयान से असहमत हूं। हाँ, आपको विली नीली को सुपर विशेषाधिकार नहीं देना चाहिए। हालाँकि, आपको आम तौर पर साझा खातों का उपयोग नहीं करना चाहिए क्योंकि आपके पास DB के भीतर कोई उचित ऑडिट ट्रेल नहीं है। यदि आपके पास साझा खाते हैं जैसे कि रूट, आपको ऑडिट ट्रेल बरकरार है यह सुनिश्चित करने के लिए इसके चारों ओर अन्य चीजों की आवश्यकता होती है।
क्रैड

36

यदि आप दूरस्थ मशीन (उदाहरण कार्यक्षेत्र) आदि का उपयोग करके MySQL से जुड़ रहे हैं, तो OS पर इस त्रुटि को समाप्त करने के लिए निम्नलिखित चरणों का उपयोग करें - जहां SQL स्थापित है

mysql -u root -p

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

MYSQL उदाहरण में प्रवेश करने का प्रयास करें।
इस त्रुटि को खत्म करने के लिए इसने मेरे लिए काम किया।


1
यह भी काम नहीं कर रहा है, क्योंकि यह "mysql -u root -p" चलाते समय भी त्रुटि का संकेत देता है
Marian Klühspies

25

प्रयत्न:

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

या इससे भी बेहतर उपयोग: mysql_setpermissionउपयोगकर्ता बनाने के लिए


1
इससे समस्या का समाधान नहीं होता है। USATE 'गोल्डी' @ '%' IDENTIFIED BY 'some_pass'; एक वैध क्वेरी है
pratim_b

किसी कारण के लिए %जो सभी मेजबान के लिए काम करना चाहिए, इसे हल नहीं कर रहा है। तो localhostयह निर्दिष्ट करके काम करना चाहिए। अगर वह DOESNT काम करता है, तो कुछ मेरे mysql में बंद है
Noam Rathaus

13

ऐसा लगता है कि आप एक उपयोगकर्ता को 'सुनहरा' @ '%' बनाने की कोशिश कर रहे हैं, लेकिन 'गोल्डन' @ 'लोकलहोस्ट' के नाम से एक अलग उपयोगकर्ता इस तरह से मिल रहा है / पूर्ववर्ती है।

यह कमांड उपयोगकर्ताओं को देखने के लिए करें:

SELECT user,host FROM mysql.user;

आपको दो प्रविष्टियाँ देखनी चाहिए:

1) उपयोगकर्ता = सुनहरा, मेजबान =%

2) उपयोगकर्ता = सुनहरा, मेजबान = लोकलहोस्ट

ये आज्ञा करें:

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

MySQL कार्यक्षेत्र को पुनरारंभ करें।

फिर अपने मूल आदेशों को फिर से करें:

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

फिर जब आप MySQL में साइन इन करने का प्रयास करने जाते हैं, तो इसे इस प्रकार लिखें:

यहां छवि विवरण दर्ज करें

'टेस्ट कनेक्शन' मारो और अपना पासवर्ड 'पासवर्ड' दर्ज करें।


2
यह एकमात्र समाधान है जो मैंने यहां पाया है जिसका कुछ महत्व था। धन्यवाद सर जी।
सुमुक शशिधर

8

पहले मैंने उपयोगकर्ता का उपयोग करके बनाया:

CREATE user user@localhost IDENTIFIED BY 'password_txt';

Googling और बाद देखकर यह , मैं का उपयोग कर उपयोगकर्ता का पासवर्ड अद्यतन:

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

और मैं बाद में जुड़ सकता था।


3

किसी और के लिए जिसने सारी सलाह की लेकिन समस्या अभी भी कायम है।

संग्रहीत कार्यविधि की जाँच करें और DEFINERS देखें। वे परिभाषाएं अब मौजूद नहीं हैं।

मेरी समस्या तब दिखाई दी जब हमने वाइल्डकार्ड होस्ट (%) को आईपी विशिष्ट में बदल दिया, जिससे डेटाबेस अधिक सुरक्षित हो गया। दुर्भाग्य से कुछ ऐसे विचार हैं जो अभी भी 'उपयोगकर्ता' @ '%' का उपयोग कर रहे हैं, भले ही 'उपयोगकर्ता' @ '172 ....' तकनीकी रूप से सही हो।


मुझे सही रास्ते पर लाने के लिए धन्यवाद। मुझे एसक्यूएल सिक्योरिटी सेटिंग के बारे में विचारों और संग्रहित प्रक्रियाओं के बारे में भी नहीं पता था। मैंने अपने विचार पर एसक्यूएल सिक्योरिटी को इनकोकर में स्थापित करना समाप्त कर दिया, ताकि यह उपयोगकर्ता के आदेश को निष्पादित करने वाले उपयोगकर्ता की अनुमति का उपयोग करे जो दृश्य बनाने वाले उपयोगकर्ता के बजाय। यहां संदर्भ के लिए एक लिंक है: dev.mysql.com/doc/refman/5.7/en/stored-programs-security.html
जस्टिन

2

मुझे भी इसी तरह की समस्या है, और बाद में मैंने पाया क्योंकि मैंने अपना होस्टनाम (नहीं localhost) बदल दिया है ।

इसलिए मैं इसे निर्दिष्ट करके हल करता हूं --host=127.0.0.1

mysql -p mydatabase --host=127.0.0.1

2

सुनिश्चित करें कि उपयोगकर्ता के पास उपयोगकर्ता तालिका में एक स्थानीयहोस्ट प्रविष्टि है। यही वह समस्या थी जो मुझे हो रही थी। पूर्व:

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

1

जिस तरह से आप अपना उपयोगकर्ता बनाते हैं, उसके अनुसार MySQL अलग तरीके से व्याख्या करता है। उदाहरण के लिए, यदि आप इस तरह से एक उपयोगकर्ता बनाते हैं:

create user user01 identified by 'test01';

MySQL को उम्मीद है कि आप कुछ विशेषाधिकार दे सकते हैं 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;

0

मेरे मामले में वही त्रुटि हुई क्योंकि मैं "mysql -u root -p" के बजाय "mysql" टाइप करके mysql का उपयोग करने का प्रयास कर रहा था।


0

mysqlworkbench से अपने सर्वर को कनेक्ट करें और इस कमांड को चलाएँ-> ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'yourpassword';


0

इस त्रुटि संदेश के लिए खोज करने के बाद यहाँ खोज करने पर गुस्सा आना:

उपयोगकर्ता 'someuser @ कहीं' के लिए पहुँच अस्वीकृत (पासवर्ड का उपयोग कर: YES)

मेरे लिए मुद्दा उद्धरण में पासवर्ड संलग्न नहीं था। जैसे। मुझे -p'password'इसके बजाय उपयोग करने की आवश्यकता थी-ppassword


-8

होस्टनाम या MySQL होस्ट पते में 'लोकलहोस्ट' के बजाय बस कंप्यूटर का नाम जोड़ें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.