- 1 1. හැඳින්වීම
- 2 2. “Access Denied for User” දෝෂය කුමක්ද?
- 3 3. ප්රධාන හේතු
- 4 4. විසඳුම්
- 5 5. FAQ (නිතර අසන ප්රශ්න)
- 6 6. සාරාංශ
1. හැඳින්වීම
“MySQL access denied for user” දෝෂය MySQL පරිශීලකයන් අතර බොහෝවිට හමුවන සාමාන්ය ගැටළුවකි. මෙම දෝෂය යනු දත්ත ගබඩාවට ප්රවේශය ප්රතික්ෂේප කර ඇති බවයි, එය නිවැරදි වින්යාසය හෝ අවසර සැකසුම් අවශ්ය වේ.
මෙම ලිපියෙන් ඔබ ඉගෙන ගන්නා දේ
- ඔබට දෝෂයේ හේතු තේරුම් ගත හැකි වන අතර, සුදුසු විසඳුම් අයදුම් කළ හැක.
- ඔබට MySQL සැකසුම් සකස් කිරීම සහ පරිශීලකයන් කළමනාකරණය කිරීම සඳහා පියවරෙන් පියවර, ආරම්භක‑හිතකාමී ක්රමවේද ඉගෙන ගත හැක.
ඉලක්ක ප්රේක්ෂකයන්
- MySQL නවින් ආරම්භ කරන ආරම්භකයන්
- දෝෂ නිරාකරණය ගැන ගැටළුවට මුහුණ දෙන මධ්යම‑මට්ටමේ පරිශීලකයන්
- ගැටළුවේ මූලික හේතුව තේරුම් ගැනීමට කැමති ඉංජිනේරුවන්
මෙම ලිපිය දෝෂයේ විස්තර, හේතු, විසඳුම් සහ පූර්ව‑ආරක්ෂණ ක්රියාමාර්ග සවිස්තරාත්මකව පැහැදිලි කරයි.
2. “Access Denied for User” දෝෂය කුමක්ද?
දෝෂ පණිවිඩයේ අර්ථය
MySQL හි “Access denied for user” දෝෂය සත්යාපනය අසාර්ථක වූ විට සිදුවේ. මෙම දෝෂයේ සාමාන්ය ආකෘතිය පහත පරිදි වේ:
ERROR 1045 (28000): Access denied for user 'username'@'hostname' (using password: YES)
දෝෂයේ වැදගත් කොටස්
'username': ගැටළුව ඇති කරන MySQL පරිශීලක නාමය'hostname': සම්බන්ධ වීමට උත්සාහ කරන හෝස්ට් (උදාහරණයක් ලෙස localhost, IP ලිපිනය)(using password: YES): මුරපද සත්යාපනය භාවිතා කරමින් ඇති බව පෙන්වයි
මෙම දෝෂය සාමාන්යයෙන් පරිශීලක සත්යාපනය හෝ අවසරයන් සම්බන්ධ ගැටළුවක් නිසා සිදුවේ.
දෝෂය සිදුවන සාමාන්ය තත්ත්වයන්
මෙම දෝෂය පහත සඳහන් අවස්ථා වලදී බහුලව පෙනේ:
- නව පරිශීලකයෙකු සෑදීමෙන් පසු වහාම අවසරයන් නිසි ලෙස සකස් නොකළ විට සිදුවේ.
- අයදුම්පත් සම්බන්ධතා තොරතුරු වැරදි විශේෂයෙන් පරණ, ගබඩා කර ඇති අක්තපත්ර භාවිතා කරන විට.
- හෝස්ට් සීමා සකසා ඇති අනුමත නොකළ හෝස්ට් වලින් සම්බන්ධතා ප්රතික්ෂේප වේ.
ආරම්භක‑හිතකාමී විස්තරය
“හෝස්ට්” යනු MySQL වෙත සම්බන්ධ වීමට උත්සාහ කරන උපාංගය හෝ සේවාදායකයයි. උදාහරණයක් ලෙස, localhost යනු ඔබ මේ මොහොතේ වැඩ කරන පරිගණකයයි.
3. ප්රධාන හේතු
වැරදි පරිශීලක නාමය හෝ මුරපදය
ඉතා සාමාන්ය හේතුව වන්නේ වැරදි පරිශීලක නාමය හෝ මුරපදයයි.
සාමාන්ය වැරදි
- වින්යාස ගොනුවේ වැරදි අක්තපත්ර ලියැවී ඇත.
- අයදුම්පත පරණ අක්තපත්ර භාවිතා කරයි.
පරීක්ෂා කිරීමේ ක්රමය
නිවැරදි පරිශීලක නාමය සහ මුරපදය සමඟ ලොග්‑ඉන් විය හැකිදැයි පරීක්ෂා කිරීම සඳහා පහත කමාන්ඩ් භාවිතා කරන්න.
mysql -u username -p
ඉල්ලීමේදී නිවැරදි මුරපදය ඇතුළත් කරන්න. මුරපදය වැරදි නම්, ලොග්‑ඉන් අසාර්ථක වේ.
පරිශීලක අවසර අඩුවීම
MySQL හි, ප්රවේශ අවසරයන් පරිශීලක අනුව සකස් කරයි. අවසර අඩුවේ නම්, දත්ත ගබඩාවට ප්රවේශය ප්රතික්ෂේප වේ.
අවසර පරීක්ෂා කිරීම
පරිශීලකගේ අවසර පරීක්ෂා කිරීම සඳහා පහත කමාන්ඩ් භාවිතා කරන්න:
SHOW GRANTS FOR 'username'@'hostname';
අවශ්ය අවසර නොමැති නම්, සුදුසු අවසර ලබා දිය යුතුය.
හෝස්ට් නාමය නොගැලපීම
MySQL හි, පරිශීලකයන්ට විශේෂිත හෝස්ට් (උදාහරණයක් ලෙස localhost, IP ලිපිනය) වලින් පමණක් සම්බන්ධ වීමට අවසර දිය හැක. හෝස්ට් නාමය නොගැලපේ නම්, සම්බන්ධතාවය ප්රතික්ෂේප වේ.
හෝස්ට් සැකසුම් පරීක්ෂා කිරීම
SELECT Host, User FROM mysql.user WHERE User = 'username';
මෙම කමාන්ඩ් නියමිත පරිශීලකයාට අවසර දී ඇති හෝස්ට් ලැයිස්තුව පෙන්වයි. ඔබගේ වත්මන් හෝස්ට් ඇතුළත් නොවන්නේ නම්, සම්බන්ධතාවය ප්රතික්ෂේප වේ.
MySQL වින්යාස ගැටළු
MySQL වින්යාස ගොනුව (සාමාන්යයෙන් my.cnf හෝ my.ini) තුළ ඇති ගැටළුද මෙම දෝෂයට හේතු විය හැක. විශේෂයෙන් bind-address සැකසුම සම්බන්ධතාවයට බලපායි.
වින්යාස පරීක්ෂා කිරීම
වින්යාස ගොනුව විවෘත කර bind-address සැකසුම පරීක්ෂා කරන්න.
bind-address = 127.0.0.1
මෙම අවස්ථාවේ දුරස්ථ සම්බන්ධතා අනුමත නොවේ, එබැවින් බාහිර ප්රවේශය ප්රතික්ෂේප වේ.
දුරස්ථ සම්බන්ධතා අවසර දීමට, bind-address = 0.0.0.0 ලෙස වෙනස් කර MySQL නැවත ආරම්භ කරන්න.
4. විසඳුම්
පරිශීලක නාමය සහ මුරපදය තහවුරු කිරීම
පළමුව, ඔබගේ වත්මන් අක්තපත්ර වල නිවැරදි බව තහවුරු කරන්න.
ක්රියාවලිය
- පහත කමාන්ඩ් එක ක්රියාත්මක කර නිවැරදි පරිශීලක නාමය සහ මුරපදය සමඟ ලොග් ඉන් වීමට උත්සාහ කරන්න.
mysql -u username -p
- නිවැරදි මුරපදය සමඟත් ඔබට ලොග් ඉන් වීමට නොහැකි නම්, මුරපදය නැවත සකස් කිරීම අවශ්ය වේ.
මුරපදය නැවත සකස් කිරීම
SET PASSWORD FOR 'username'@'hostname' = PASSWORD('new_password');
පරිශීලක අධිකාරි සැකසීම
අවශ්ය අධිකාරි සැකසී ඇතිදැයි පරීක්ෂා කර, අඩු නම් ඒවා ලබා දෙන්න.
අධිකාරි පරීක්ෂා කිරීම
SHOW GRANTS FOR 'username'@'hostname';
අධිකාරි ලබා දීම
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'hostname';
FLUSH PRIVILEGES;
මෙය පරිශීලකයාට සියලු අධිකාරි ලබා දී වෙනස්කම් ක්රියාත්මක කරයි.
හෝස්ට් නාම සැකසුම් වෙනස් කිරීම
දෝෂය හෝස්ට් සීමා හේතුවෙන් ඇති නම්, සුදුසු හෝස්ට් සැකසුම් සකසන්න.
හෝස්ට් සැකසුම් පරීක්ෂා කිරීම
SELECT Host, User FROM mysql.user WHERE User = 'username';
හෝස්ට් සැකසුම් යාවත්කාලීන කිරීම
UPDATE mysql.user SET Host='%' WHERE User='username';
FLUSH PRIVILEGES;
% නියම කිරීම සියලු හෝස්ට් වලින් සම්බන්ධතා ඉඩ දෙයි. නමුත්, මෙය ආරක්ෂා අවදානම් ඇති කරනු ඇති බැවින්, හැකි තරම් විශේෂ IP ලිපිනයක් නියම කිරීම සුදුසුය.
MySQL වින්යාසය වෙනස් කිරීම
සම්බන්ධතා සීමා නිවැරදිව සැකසීමට වින්යාස ගොනුව (my.cnf හෝ my.ini) සංස්කරණය කරන්න.
වින්යාස ගොනුව සංස්කරණය කිරීම
Linux සඳහා:
sudo nano /etc/mysql/my.cnf
Windows සඳහා:
C:\ProgramData\MySQL\MySQL Server X.X\my.ini
(X.X ඔබගේ MySQL අනුවාදය අනුව වෙනස් වේ)
bind-address සැකසුම පරීක්ෂා කිරීම
bind-address = 127.0.0.1
මෙම සැකසුම localhost වලින් පමණක් සම්බන්ධතා ඉඩ දෙයි. දුරස්ථ සම්බන්ධතා සක්රිය කිරීමට, පහත පරිදි වෙනස් කරන්න:
bind-address = 0.0.0.0
වෙනස්කම් ක්රියාත්මක කිරීමට MySQL නැවත ආරම්භ කිරීම
sudo systemctl restart mysql
හෝ (Windows සඳහා):
net stop MySQL
net start MySQL
මෙම ක්රම භාවිතා කිරීමෙන්, ඔබට බොහෝ “පරිශීලකයාට ප්රවේශය ප්රතික්ෂේප කරන ලදී” දෝෂ විසඳා ගත හැක. ඉදිරියට, සාමාන්යයෙන් අසන ප්රශ්න (FAQ) සමාලෝචනය කරමු.

5. FAQ (නිතර අසන ප්රශ්න)
Q1: දෝෂය ඉවත් නොවන්නේ නම් මට කුමක් කළ යුතුද?
A1: දෝෂ ලොග් පරීක්ෂා කරන්න.
දෝෂයේ හේතුව හඳුනා ගැනීමට MySQL දෝෂ ලොග් පරීක්ෂා කිරීම ප්රයෝජනවත් වේ.
Linux සඳහා
sudo cat /var/log/mysql/error.log
Windows සඳහා
පෙරනිමි දෝෂ ලොග් මාර්ගය පහත සඳහන් එකක් වේ:
C:\ProgramData\MySQL\MySQL Server X.X\error.log
ලොග් පරීක්ෂා කර, විශේෂ දෝෂ පණිවුඩය අනුව ප්රශ්නය විසඳන්න.
Q2: දෝෂය විශේෂ පරිශීලකයකට පමණක් ඇදෙනුයේ ඇයි?
A2: එය පරිශීලකයාගේ හෝස්ට් සැකසුම් හෝ අධිකාරි හේතුවෙන් විය හැක.
අදාළ පරිශීලකයාගේ අධිකාරි පහත කමාන්ඩ් එකෙන් පරීක්ෂා කරන්න:
SHOW GRANTS FOR 'username'@'hostname';
හෝස්ට් වින්යාසය නිවැරදිදැයිද පරීක්ෂා කරන්න:
SELECT Host, User FROM mysql.user WHERE User = 'username';
හෝස්ට් සැකසුම වැරදිය නම්, සුදුසු ලෙස වෙනස් කරන්න:
UPDATE mysql.user SET Host='%' WHERE User='username';
FLUSH PRIVILEGES;
Q3: මට ලොග් ඉන් තොරතුරු අමතක වූ විට මුරපදය නැවත සකස් කරගන්නේ කෙසේද?
A3: MySQL ආරක්ෂිත ප්රකාරයේ ආරම්භ කර මුරපදය නැවත සකස් කරන්න.
Linux සඳහා
sudo systemctl stop mysql
sudo mysqld_safe --skip-grant-tables &
mysql -u root
ඊළඟට, පහත කමාන්ඩ් එකෙන් මුරපදය නැවත සකස් කරන්න:
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
MySQL නැවත ආරම්භ කරන්න:
sudo systemctl restart mysql
Windows සඳහා
- පරිපාලක ලෙස Command Prompt විවෘත කර MySQL ආරක්ෂිත ප්රකාරයේ ආරම්භ කරන්න.
net stop MySQL mysqld --skip-grant-tables
- වෙනත් Command Prompt කවුළුවක MySQL වෙත සම්බන්ධ වී මුරපදය නැවත සකසන්න.
mysql -u root UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root'; FLUSH PRIVILEGES; EXIT;
- MySQL නැවත ආරම්භ කරන්න.
net start MySQL
මෙම ක්රියාවලිය අනුගමනය කිරීමෙන් ඔබට අමතක වූ මුරපදයක් නැවත සකස් කළ හැක.
මෙම FAQ කොටස දෝෂය තවමත් පවතින විට කළ යුතු දේ පිළිබඳව සාකච්ඡා කරමින් සාමාන්ය ප්රශ්නවලට පිළිතුරු දී ඇත. අවසානයේ, සාරාංශය සමාලෝචනය කරමු.
6. සාරාංශ
මෙම ලිපිය MySQL හි “පරිශීලකයා සඳහා ප්රවේශය ප්රතික්ෂේප කරන ලදී” දෝෂය පිළිබඳ විස්තරාත්මක විස්තරයක් ලබා දී ඇත. මෙම දෝෂය සාමාන්යයෙන් වැරදි සත්යාපන අක්තපත්ර, ප්රමාණවත් නොවන අවසර, වැරදි හෝස්ට් වින්යාසය, හෝ MySQL වින්යාස දෝෂයන් නිසා සිදුවේ.
මෙම ලිපියේ ප්රධාන කරුණු
- දෝෂයේ හේතුව හඳුනා ගැනීම
- වැරදි පරිශීලක නාමයක් හෝ මුරපදයක් භාවිතා කරමින් සිටිනවාදැයි පරීක්ෂා කරන්න.
SHOW GRANTS FOR 'username'@'hostname';භාවිතයෙන් අවසර පරීක්ෂා කරන්න.SELECT Host, User FROM mysql.user WHERE User = 'username';භාවිතයෙන් හෝස්ට් සැකසුම් පරීක්ෂා කරන්න.
- සුදුසු විසඳුම අයදුම් කිරීම
SET PASSWORDවිධානය භාවිතයෙන් මුරපදය නැවත සකසන්න.GRANT ALL PRIVILEGESවිධානය භාවිතයෙන් අවසර සකසන්න.- දුරස්ථ සම්බන්ධතා සඳහා
bind-addressසැකසුම සුදුසු ලෙස වෙනස් කරන්න.
- ගැටලුව තවමත් පවතින්නේ නම්, දෝෂ ලොග් පරීක්ෂා කරන්න
- Linux:
/var/log/mysql/error.log - Windows:
C:\ProgramData\MySQL\MySQL Server X.X\error.log
නැවත සිදුවීම වැළැක්වීමට හොඳ පුරුදු
- නිසි පරිශීලක කළමනාකරණය
- සෑම පරිශීලකයකුටම සුදුසු අවසර ලබා දී, අවශ්ය නොවන පරිශීලකයන් ඉවත් කරන්න.
- හෝස්ට් වින්යාසය පැහැදිලි කිරීම
- අවශ්ය නොවන විට සියලු හෝස්ට් (උදා:
'%') වෙතින් ප්රවේශය ලබා දීමෙන් වළකින්න, එය ආරක්ෂක අවදානමක් වේ. හැකි තරම් විශේෂිත හෝස්ට් වලට පමණක් ප්රවේශය සීමා කරන්න. - නිතිපතා බැක්අප් කිරීම
- වින්යාස දෝෂයන් නිසා ඇති විය හැකි ගැටළු වලින් වැළැක්වීමට
mysqldumpනිතර භාවිතා කරන්න.
අවසාන අදහස්
“පරිශීලකයා සඳහා ප්රවේශය ප්රතික්ෂේප කරන ලදී” දෝෂය ආරම්භකයන්ට අභියෝගයක් විය හැකි නමුත්, මෙම ලිපියේ සඳහන් ක්රියාවලීන් අනුගමනය කිරීමෙන් බොහෝ ගැටළු විසඳිය හැක. ගැටළුව තවමත් පවතින්නේ නම්, දෝෂ ලොග් පරීක්ෂා කර, ඔබේ වින්යාසය සහ අවසර නැවත පරීක්ෂා කරන්න.


