- 1 1. [Quick Answer] MySQL පරිශීලක මුරපද වෙනස් කිරීමේ විධාන ලැයිස්තුව (වේගවත් විසඳුම)
- 2 2. MySQL පරිශීලකයන් සහ හෝස්ට් මූලික කරුණු (සාමාන්ය “අට්ටාල” ගැටළු වැළැක්වීම)
- 3 3. නිර්දේශිත ක්රියාවලිය: ALTER USER සමඟ ආරක්ෂිතව වෙනස් කරන්න (MySQL 8.0 / 5.7 සඳහා ක්රියා කරයි)
- 4 4. MySQL 8.0 සහ 5.7 අතර වෙනස්කම්
- 5 5. අමතක වූ root මුරපදය ප්රතිසාධනය (ආරක්ෂණ-කේන්ද්රිත ක්රියාවලිය)
- 6 6. පොදු දෝෂ සහ විසඳුම් (දෝෂ පණිවිඩ අනුව ගමන් තොරතුරු ග්රහණය කිරීම)
- 7 7. ආරක්ෂාවේ මෙහෙයුම්: මුරපද ප්රතිපත්ති සහ හොඳම පිළිවෙත්
- 8 8. FAQ (පොදු ප්රශ්න)
- 8.1 8.1 ප්රශ්නය. මුරපදය වෙනස් කළ පසු සක්රිය sessions වලට කුමක් සිදුවේද?
- 8.2 8.2 ප්රශ්නය. මම මුරපදය වෙනස් කළත් තවමත් log in විය නොහැක
- 8.3 8.3 ප්රශ්නය. මට විශේෂිත පරිශීලකයෙකුට පමණක් මුරපද වෙනස් කිරීමට ඉඩදෙන්න පුළුවන්ද?
- 8.4 8.4 ප්රශ්නය. MariaDB හි මෙම ක්රමය එකමද?
- 8.5 8.5 ප්ර. මුරපද වෙනස් කිරීමේ ඉතිහාසය පරීක්ෂා කළ හැකිද?
- 8.6 8.6 ප්ර. –skip-grant-tables භාවිතයෙන් root නොවන පරිශීලකයන් ප්රතිසාධනය කළ හැකිද?
- 9 9. සාරාංශය
- 9.1 9.1 ALTER USER භාවිතා කිරීම ප්රමිතීකරණ ක්රමයක් ලෙස
- 9.2 9.2 පරිශීලකයන් “user@host” ලෙස කළමනාකරණය වේ
- 9.3 9.3 8.0 හි සත්යාපන ප්ලගීනවලට අවධානය දෙන්න
- 9.4 9.4 root මුරපදය ප්රතිසාධනය කරන විට සැලකිලිමත් වන්න
- 9.5 9.5 බොහෝ දෝෂවලට පැහැදිලි හේතු ඇත
- 9.6 9.6 ප්රායෝගිකව, අවම අවසර සහ මෙහෙයුම් සැලසුම වැඩි වැදගත්කමක් ගනී
1. [Quick Answer] MySQL පරිශීලක මුරපද වෙනස් කිරීමේ විධාන ලැයිස්තුව (වේගවත් විසඳුම)
MySQL හි පරිශීලකයකුගේ මුරපදය වෙනස් කිරීම සඳහා මූලික විධානය ALTER USER වේ.
මෙම ක්රමය MySQL 5.7 සහ ඊට පසු අනුවර්තන වල නිර්දේශිතය, සහ MySQL 8.0 හිද ඒම ආකාරයෙන් භාවිතා වේ.
1.1 මූලික ව්යවස්ථාව (ඉතා සාමාන්යයෙන් භාවිතා වන)
ALTER USER 'username'@'localhost' IDENTIFIED BY 'newpassword';
username: යාවත්කාලීන කිරීමට ඉලක්ක පරිශීලක නාමයlocalhost: ගනුදෙනුකරුගේ හෝස්ට් (MySQL ගිණුම “පරිශීලක නාමය + හෝස්ට්” මගින් හඳුනාගනී)newpassword: නව මුරපදය
ක්රියාත්මක කිරීමෙන් පසු, වෙනස්කම වහාම බලපැවැත්වේ. බොහෝ අවස්ථාවල FLUSH PRIVILEGES; අවශ්ය නොවේ (ALTER USER ස්වයංක්රීයව අවසර වගු යාවත්කාලීන කරයි).
සාමාන්ය වැරදි
- එකම පරිශීලක නාමයක් තිබුණත්,
@'localhost'සහ@'%'වෙනත් ගිණුම් ලෙස සැලකේ - මුරපදයේ සංකේතයන් එකකෝට්ටු තුළ ඇතුළත් කළ යුතුය
1.2 දුරස්ථ ප්රවේශ පරිශීලකය වෙනස් කිරීම (%)
ALTER USER 'username'@'%' IDENTIFIED BY 'newpassword';
% යනු “ඕනෑම හෝස්ට්” යන අර්ථයයි.
මෙය වලාකුළු පරිසරවල හෝ පිටතින් සම්බන්ධ වීමට අවසර ලත් පරිශීලකයන් සඳහා සාමාන්යයෙන් භාවිතා වේ.
සටහන්
SELECT User, Host FROM mysql.user;භාවිතයෙන් පෙර පරීක්ෂා කිරීම ආරක්ෂිතයි- වැරදි හෝස්ට් සඳහා මුරපදය වෙනස් කළහොත්, ඔබට ලොග් ඉන් වීමට නොහැකි වේ
1.3 සත්යාපන ප්ලග්ඉන් නිරූපණය කරමින් මුරපදය වෙනස් කිරීම (8.0 හි වැදගත්)
MySQL 8.0 හි, පෙරනිමි සත්යාපන ප්ලග්ඉන් caching_sha2_password වේ.
පැරණි ගනුදෙනුකරුවන් සමඟ සම්බන්ධ වීමට නොහැකි නම්, ප්ලග්ඉන් එක පැහැදිලිව සකසන්න.
ALTER USER 'username'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'newpassword';
mysql_native_password: පරණ ක්රමය (අනුකූලතාවයට ප්රමුඛත්වය දේ)caching_sha2_password: MySQL 8.0 ප්රමිතිය (නිර්දේශිතය)
සාමාන්ය වැරදි
- පැරණි PHP හෝ ගනුදෙනුකරුවන් MySQL 8.0 පෙරනිමි ප්ලග්ඉන් එකට සහය නොදිය හැක
- සත්යාපන ප්ලග්ඉන් පරීක්ෂා නොකර “මට ලොග් ඉන් වීමට නොහැකි” යැයි තීරණය කිරීම
1.4 අවසර දෝෂයක් ලැබුනහොත්
දෝෂ උදාහරණය:
ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s)
මෙම අවස්ථාවේ, වත්මන් ලොග් ඉන් වූ පරිශීලකයාට වෙනස් කිරීමේ අවසර නොමැත.
පරීක්ෂා කරන්න:
SHOW GRANTS FOR CURRENT_USER();
ඇණවුම root ලෙස හෝ ප්රමාණවත් අවසර ඇති පරිශීලකයක් ලෙස ක්රියාත්මක කරන්න.
1.5 වෙනස් කිරීමෙන් පසු තහවුරු කිරීමේ ක්රමය
SELECT User, Host, plugin FROM mysql.user WHERE User='username';
pluginතීරුව මගින් සත්යාපන ප්ලග්ඉන් පරීක්ෂා කරන්න- සැබැවින්ම ලොග් ඉන් වී සම්බන්ධතාවය තහවුරු කිරීමයි අති විශ්වාසදායක පරීක්ෂාව
1.6 පවතින සැසියන්ට සිදුවන්නේ කුමක්ද
මුරපදය වෙනස් කිරීමෙන් පසු:
- නව සම්බන්ධතා නව මුරපදය භාවිතා කළ යුතුය
- පවතින සැසියන් පරිසරය අනුව වහාම අවසන් විය හැක
- නිෂ්පාදන පරිසරයේ, ව්යාපාරික වේලාවන් පිටත වෙනස්කම් කිරීම නිර්දේශිතය
2. MySQL පරිශීලකයන් සහ හෝස්ට් මූලික කරුණු (සාමාන්ය “අට්ටාල” ගැටළු වැළැක්වීම)
MySQL හි, පරිශීලකයෙකු “පරිශීලක නාමය” පමණක් මගින් හඳුනාගන්නේ නැත. එය “පරිශීලක නාමය + ගනුදෙනුකරුගේ හෝස්ට් (Host)” සංයෝගයෙන් හඳුනාගනී. ඔබට මෙය නොදැන සිටිනවා නම්, සාම්ප්රදායික ගැටළුවකට මුහුණ පාන්න පුළුවන්: “මුරපදය වෙනස් කළාට පසුත් මට ලොග් ඉන් වීමට නොහැක.”
2.1 පරිශීලකය “user@host” යුගලයක් වේ
උදාහරණ:
'appuser'@'localhost''appuser'@'%''appuser'@'192.168.1.%'
මෙම සියල්ල වෙනත් ගිණුම් ලෙස සැලකේ.
ඒ නිසා localhost සඳහා මුරපදය වෙනස් කළාම, % ගිණුමට එය බලපාන්නේ නැත.
පරීක්ෂා කිරීමේ විධානය:
SELECT User, Host FROM mysql.user ORDER BY User, Host;
සාමාන්ය වැරදි
- එකම පරිශීලක නාමය සමඟ බහු ගිණුම් තිබෙන බව නොදැනීම
- ඔබ
localhostසඳහා මුරපදය වෙනස් කළා, නමුත් ඔබ TCP (127.0.0.1) මගින් ලොග් ඉන් වෙයි
2.2 localhost සහ 127.0.0.1 වෙනස් ලෙස සැලකේ
MySQL හි:
localhost→ UNIX සොකට් සම්බන්ධතාවය (දේශීය අභ්යන්තර සම්බන්ධතාවය)127.0.0.1→ TCP/IP සම්බන්ධතාවය
පරිසරය අනුව, වෙනත් ගිණුමක් ගැලපෙන්න පුළුවන්.
පරීක්ෂා කරන්න:
mysql -u username -p -h 127.0.0.1
ඔබ ඉහත දත්ත සමඟ ලොග් වීමට නොහැකි නම්, @'127.0.0.1' ගිණුම නොමැති විය හැක.
2.3 වත්මන් සත්යාපිත පරිශීලකයා පරීක්ෂා කරන්න
ඔබ සත්යාපිත වන ගිණුම කුමක්ද යන්න තේරුම් ගැනීම වැදගත් වේ.
SELECT CURRENT_USER();
මෙය වත්මන් සත්යාපිත “user@host” පෙන්වයි.
SELECT USER(); සම්බන්ධතා ඉල්ලීමේ තොරතුරු පෙන්වයි, එබැවින් එය ගැලපෙන්නේ නැති විය හැක.
2.4 අවසර පරීක්ෂා කරන්න (SHOW GRANTS)
ඔබට මුරපදය වෙනස් කළ නොහැකි නම්, ප්රමාණවත් නොවන අවසරයන් හේතුවක් විය හැක.
SHOW GRANTS FOR 'username'@'host';
හෝ වත්මන් ලොග් වු පරිශීලකයා සඳහා:
SHOW GRANTS FOR CURRENT_USER();
අවශ්ය අවම අවසරයන්
ALTER USER- හෝ
SYSTEM_USER(MySQL 8.0 සහ පසුගිය සංස්කරණ)
2.5 සාමාන්ය අසාර්ථක රටා
- ඔබ වැරදි Host සඳහා මුරපදය වෙනස් කර ඇත
- සත්යාපන ප්ලගිනය වෙනස් වේ (8.0 හි ඉතා පොදුය)
- ඉලක්ක ගිණුම මුලින්ම නොමැත
පරිශීලකයා පවතිනදැයි පරීක්ෂා කරන්න:
SELECT User, Host FROM mysql.user WHERE User='username';
ඔබ මෙම ආකෘතිය තේරුම් ගත් පසු, මුරපද-වෙනස් කිරීම සම්බන්ධ ගැටළු බොහෝමයක් වැළැක්විය හැක.
3. නිර්දේශිත ක්රියාවලිය: ALTER USER සමඟ ආරක්ෂිතව වෙනස් කරන්න (MySQL 8.0 / 5.7 සඳහා ක්රියා කරයි)
MySQL 5.7 සහ පසුගිය සංස්කරණවල, ALTER USER භාවිතයෙන් මුරපද වෙනස් කිරීම ප්රමිතිය සහ නිර්දේශිත ක්රමය වේ.
UPDATE mysql.user වැනි සෘජු යාවත්කාලීන කිරීම් සංස්කරණය අනුව වෙනස් හැසිරීම් පෙන්විය හැකි අතර, අනාගත අනුකූලතාවේ අවදානම් ඇති කරයි, එබැවින් ඒවා වැළැක්වීම හොඳය.
3.1 පෙර-පරීක්ෂා (වෙනස් කිරීමට පෙර සැමවිටම තහවුරු කරන්න)
මුරපදයක් වෙනස් කිරීමට පෙර, මෙම තුන් අංග තහවුරු කරන්න.
① ඉලක්ක පරිශීලකයා සහ Host තහවුරු කරන්න
SELECT User, Host FROM mysql.user WHERE User='username';
- එකම පරිශීලක නාමය සමඟ බහු ගිණුම් පවතිනදැයි පරීක්ෂා කරන්න
localhostසහ%එකිනෙකට ගැලපෙන්න එපා
② වත්මන් සත්යාපන ප්ලගිනය තහවුරු කරන්න (8.0 හි වැදගත්)
SELECT User, Host, plugin
FROM mysql.user
WHERE User='username';
caching_sha2_password(MySQL 8.0 ප්රමිතිය)mysql_native_password(පැරණි ප්ලගිනය)
සම්බන්ධතා අසාර්ථක වීමේ කිසිඳු හේතුවක් සත්යාපන ප්ලගිනයෙන් සිදුවේ.
③ වත්මන් සත්යාපිත පරිශීලකයා තහවුරු කරන්න
SELECT CURRENT_USER();
අවසර දෝෂ වැළැක්වීමට, root ලෙස හෝ සුදුසු අවසර ඇති පරිශීලකයෙකු ලෙස විධාන ක්රියාත්මක කරන්න.
3.2 ALTER USER ක්රියාත්මක කරන්න (ප්රමිතීකරණ ආකාරය)
ALTER USER 'username'@'localhost'
IDENTIFIED BY 'NewStrongPassword123!';
වෙනස්කම වහාම ක්රියාත්මක වේ.
බොහෝ අවස්ථාවල, FLUSH PRIVILEGES; අවශ්ය නොවේ.
සටහන්
- මුරපද ප්රතිපත්තිය (
validate_password) උල්ලංඝනය කරන්නේ නම්,ERROR 1819සිදුවිය හැක - මුරපදය විශේෂ අක්ෂර ඇතුළත් නම්, එය සදාකාලිකව එකකෝට්ටුවල (single quotes) ගැලපවන්න
3.3 සත්යාපන ප්ලගිනය නිරූපණය කරමින් වෙනස් කරන්න (අවශ්ය නම් පමණක්)
ඔබ MySQL 8.0 පරිසරයක පරණ ගනුදෙනුකරුවන් භාවිතා කරන්නේ නම්:
ALTER USER 'username'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'NewStrongPassword123!';
ඔබට එය වෙනස් කළ යුතු අවස්ථා:
- පරණ PHP / පරණ MySQL ගනුදෙනුකරුවන් සමඟ සම්බන්ධ විය නොහැක
caching_sha2_passwordසහය නොදක්වන පරිසරයක්
ඔබට එය වෙනස් නොකළ යුතු අවස්ථා:
- නවීන පරිසරයක (ප්රමිතීකරණ ප්ලගිනය වඩා ආරක්ෂිත) ගැටළුවක් නොමැතිව සම්බන්ධ විය හැකි නම්
3.4 වෙනස් කිරීමෙන් පසු සත්යාපනය
① සත්යාපන ප්ලගිනය තහවුරු කරන්න
SELECT User, Host, plugin
FROM mysql.user
WHERE User='username';
② ඇත්තෙන්ම ලොග් වීමෙන් තහවුරු කරන්න
mysql -u username -p
ඔබට ලොග් විය හැකිදැයි සැමවිටම පරීක්ෂා කරන්න.
3.5 පවතින සැසියන්ට ඇති බලපෑම
මුරපදයක් වෙනස් කිරීමෙන් පසු:
- නව සම්බන්ධතා → නව මුරපදය භාවිතා කළ යුතුය
- පවතින සම්බන්ධතා → පරිසරය අනුව තවමත් පවතින්න පුළුවන්
- නිෂ්පාදනය → යෙදුම් සම්බන්ධතා නැවත ආරම්භ කිරීම අවශ්ය විය හැක
සාමාන්ය වැරදි
- යෙදුමේ සම්බන්ධතා අක්තපත්ර යාවත්කාලීන නොකිරීම
- පරණ මුරපදයන් තවමත් වින්යාස ගොනු තුළ පවතිනවා
3.6 නිෂ්පාදනය සඳහා ආරක්ෂිත මෙහෙයුම් උපදෙස්
- ව්යාපාරික වේලාවන් පිටත වෙනස්කම් සිදු කරන්න
- යෙදුම් වින්යාස ගොනු පෙර පරීක්ෂා කරන්න
- ඔබේ SSH සැසිය අවිස්සාවෙන් තොරව වැඩ කරන්න
- root වෙනස් කරන විට, ප්රතිසාධන ක්රමයක් සූදානම් කරගෙන සිටින්න
4. MySQL 8.0 සහ 5.7 අතර වෙනස්කම්
MySQL මුරපද වෙනස් කිරීමේදී ඇතිවන ප්රධාන ගැටළුව MySQL 8.0 සහ 5.7 අතර සත්යාපන ක්රමවල වෙනස්කම වේ. විශේෂයෙන්, “මට වෙනස් කළා, නමුත් ලොග් විය නොහැක” යන බොහෝ අවස්ථා සත්යාපන ප්ලග්ඉන් වෙනස්කම් නිසා සිදුවේ.

MySQL 5.7 සහ MySQL 8.0 අතර සත්යාපන වෙනස්කම
4.1 පෙරනිමි සත්යාපන ප්ලග්ඉන් වෙනස්කම්
| Version | Default authentication plugin |
|---|---|
| MySQL 5.7 | mysql_native_password |
| MySQL 8.0 | caching_sha2_password |
MySQL 8.0 හි, caching_sha2_password ශක්තිමත් ආරක්ෂාව සඳහා ප්රමිතියක් බවට පත්විය. එහෙත්, පැරණි ගනුදෙනුකරුවන් (පැරණි PHP අනුවාද, පැරණි MySQL සම්බන්ධක, ආදිය) එය සහය නොදක්වනු ඇත.
පරීක්ෂා කිරීමේ ක්රමය:
SELECT User, Host, plugin
FROM mysql.user
WHERE User='username';
සාමාන්ය ගැටළු
- පැරණි ගනුදෙනුකරුවන් MySQL 8.0 හි සාදන ලද පරිශීලකයන්ට සම්බන්ධ වීමට නොහැක
- දෝෂයක් සිදු වුවත්, මූලික හේතුව සත්යාපන ප්ලග්ඉන් බව ඔබ නොදනි.
4.2 අනුකූලතාව සඳහා සත්යාපන ප්ලග්ඉන් මාරු කිරීමේ ක්රමය
පැරණි පරිසරයකින් සම්බන්ධ විය යුතු විට පමණක්, මෙසේ වෙනස් කරන්න:
ALTER USER 'username'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'NewStrongPassword123!';
වෙනස් කිරීමෙන් පසු, සම්බන්ධතා පරීක්ෂාවක් සැමවිටම ක්රියාත්මක කරන්න.
සටහන්
- ආරක්ෂණ දෘශ්යකෝණයෙන්,
caching_sha2_passwordවඩා ආරක්ෂිතයි - අවශ්ය නොවූ විට පරණ ප්ලග්ඉන් වෙත මාරු නොකරන්න
- හැකි නම්, ගනුදෙනුකරු පාර්ශ්වය යාවත්කාලීන කිරීම වඩාත් සුදුසුය
4.3 සෘජු UPDATE භාවිතය නිර්දේශ නොකෙරේ
MySQL 5.7 සහ එයට පෙර, පහත පරිදි ක්රම භාවිතා කරනු ලැබුණි:
UPDATE mysql.user
SET authentication_string=PASSWORD('newpassword')
WHERE User='username';
FLUSH PRIVILEGES;
කෙසේ වෙතත්, මෙම ක්රමය:
- අනුවාද-අධාරිත
- 8.0 හි විශේෂණ වෙනස්කම්ට ලක්වීම
- අනාගතයේ අහෝසි වීමට ඉඩ ඇත
සාමාන්ය නියමය: ALTER USER භාවිතා කරන්න
4.4 validate_password ප්ලග්ඉන්ගේ හැසිරීමේ වෙනස්කම්
MySQL 5.7 සහ 8.0 හි, මුරපද ප්රතිපත්තිය (ශක්තිය පරීක්ෂා කිරීම) විශේෂාංග පෙරනිමි ලෙස ලබා ගත හැක.
පරීක්ෂා කරන්න:
SHOW VARIABLES LIKE 'validate_password%';
ප්රතිපත්තිය උල්ලංඝනය කළහොත්, ඔබට ලැබිය හැක:
ERROR 1819 (HY000)
බොහෝ 8.0 පරිසරයන් තද ආරක්ෂණ මට්ටම් අත්යවශ්ය කරන්නේ නිසා, 5.7 සිට උත්සර්ගත කිරීමෙන් පසු, ශක්තිමත් ප්රතිපත්තිය නිසා මුරපද වෙනස්කම් තවත් සාර්ථක නොවීමක් ඔබට පෙනේ.
4.5 ඔබේ අනුවාදය පරීක්ෂා කිරීමේ ක්රමය
ඔබ ධාවනය කරන අනුවාදය නොදන්නා නම්:
SELECT VERSION();
අනුවාදය තහවුරු නොකර විසඳුම් යොදන්නේ නම්, වැරදි ක්රමයක් භාවිතා කරනු ඇත.
5. අමතක වූ root මුරපදය ප්රතිසාධනය (ආරක්ෂණ-කේන්ද්රිත ක්රියාවලිය)
ඔබ MySQL root පරිශීලක (පරිපාලක) මුරපදය අමතක කරන්නේ නම්, සාමාන්ය ලෙස ලොග් විය නොහැක. එවැනි අවස්ථාවක, තාවකාලිකව grant වගු අක්රිය කර මුරපදය නැවත සකස් කළ යුතුය. කෙසේ වෙතත්, මෙම ක්රියාවලිය ආරක්ෂණ අවදානම් රැගෙන යන බැවින්, පියවරයන් අවධානයෙන් අනුගමනය කරන්න.
5.1 ඔබට ඇත්තෙන්ම root මුරපදය අවශ්යද යන්න තහවුරු කරන්න
පළමුව, පහත පරීක්ෂා කරන්න:
- ඔබට OS මට්ටමේ
sudoඅධිකාරි තිබේද auth_socketසත්යාපනය සක්රිය කර තිබේද (Ubuntu-අධාරිත පද්ධති වල සාමාන්යය)
උදාහරණ පරීක්ෂාව:
SELECT User, Host, plugin
FROM mysql.user
WHERE User='root';
plugin එක auth_socket නම්, ඔබ OS root පරිශීලකයා ලෙස ලොග් විය හැක.
sudo mysql
මෙය ක්රියාත්මක නම්, ඔබට මුරපදය නැවත සකස් කිරීම පමණක් අවශ්ය වේ.
5.2 ප්රතිසාධන ප්රවාහය (සාමාන්ය ක්රියාවලිය)
① MySQL සේවාදායකය නවත්වන්න
sudo systemctl stop mysql
② grant වගු අක්රිය කර ආරම්භ කරන්න
sudo mysqld_safe --skip-grant-tables &
--skip-grant-tables සත්යාපනය අක්රිය කරයි. මෙම තත්ත්වයේ, ඕනෑම කෙනෙකුට සම්බන්ධ විය හැකි බැවින්, ක්රියාවලිය ඉක්මනින් සම්පූර්ණ කරන්න.
③ MySQL වෙත සම්බන්ධ වන්න
mysql -u root
ඔබට මුරපදයක් නොමැතිව සම්බන්ධ විය හැක.
④ root මුරපදය නැවත සකස් කරන්න (නිර්දේශිත ක්රමය)
ALTER USER 'root'@'localhost'
IDENTIFIED BY 'NewStrongPassword123!';
වැදගත්
UPDATE mysql.userසෘජුව භාවිතා නොකරන්නALTER USERභාවිතා කරන්න (අනුවාද සමඟ අනුකූලතාව සඳහා)
⑤ අනුදෙනු වගු නැවත සක්රිය කරන්න
FLUSH PRIVILEGES;
⑥ සාමාන්ය ප්රකාරයේ MySQL නැවත ආරම්භ කරන්න
sudo systemctl restart mysql
ඊළඟට සාමාන්ය ලොග් ඉන් පරීක්ෂා කරන්න:
mysql -u root -p
5.3 පොදු වැරදි
--skip-grant-tablesසක්රිය තබා ගැනීම (ගැඹුරු ආරක්ෂා අවදානම)- අහඹු ලෙස root Host වෙනස් කිරීම
- සත්යාපන ප්ලග්ඉන් වැරදි ලෙස වෙනස් කිරීම සහ ඔබව පිටුදැකීම
5.4 නිෂ්පාදන පරිසර සඳහා සටහන්
- සමාජ සේවාදායකයන්හි නඩත්තු කාලය තුළ මෙය සෑම විටම සිදු කරන්න
- වැඩ කරන අතර ඔබේ SSH සැසිය සක්රියව තබා ගන්න
- හැකි නම් පෙරමුණේ බැකප් එකක් සාදන්න
Root මුරපද ප්රතිසාධනය සුරක්ෂිතව සිදු කළ හැක, ඔබ එය අවධානයෙන් ක්රියාත්මක කළහොත්.
6. පොදු දෝෂ සහ විසඳුම් (දෝෂ පණිවිඩ අනුව ගමන් තොරතුරු ග්රහණය කිරීම)
MySQL මුරපද වෙනස් කිරීමේදී බොහෝ සාමාන්ය දෝෂ සිදුවේ.
පහත, අපි සාමාන්ය හේතු සහ විසඳුම් ප්රචලිතව සොයන දෝෂ කේත අනුව සංවිධානය කරමු.
6.1 දෝෂ 1819 (මුරපදය ප්රතිපත්ති අවශ්යතා සපුරාලන්නේ නැත)
දෝෂ උදාහරණය:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
හේතුව
validate_password ප්ලග්ඉන් විසින් ක්රියාත්මක කරන ශක්තියේ සත්යාපනය මුරපදයට අසමත් විය.
වත්මන් ප්රතිපත්තිය පරීක්ෂා කරන්න
SHOW VARIABLES LIKE 'validate_password%';
වැදගත් සැකසුම්:
validate_password.lengthvalidate_password.policyvalidate_password.mixed_case_countvalidate_password.number_countvalidate_password.special_char_count
විසඳුම ① (නිර්දේශිත): ශක්තිමත් මුරපදයක් භාවිතා කරන්න
- අවම වශයෙන් අක්ෂර 12 ක්
- අග්රකොටස්, කුඩාකොටස්, අංක, සහ සංකේත ඇතුළත් කරන්න
- ශබ්දකෝෂ වචන වලින් වැළකී සිටින්න
විසඳුම ② (තාවකාලිකව ප්රතිපත්තිය සෙසු කිරීම)
SET GLOBAL validate_password.policy = LOW;
ඔබේ කාර්යය සම්පූර්ණ කළ පසු, මුල් සැකසීම නැවත පිහිටුවීමට නිර්දේශ කරයි.
පොදු වැරදි
- නිෂ්පාදනයේ ප්රතිපත්තිය සෙසු තබා ගැනීම
- මෙම සැකසීම වෙනස් කිරීම සඳහා SUPER අධිකාරි අවශ්ය බව නොසලකා හැරීම
6.2 දෝෂ 1227 (අපේක්ෂිත අධිකාරි නොමැතිකම)
දෝෂ උදාහරණය:
ERROR 1227 (42000): Access denied; you need (at least one of) the SYSTEM_USER privilege(s)
හේතුව
වත්මන් පරිශීලකයාට ALTER USER හෝ SYSTEM_USER අධිකාරිය නොමැත.
අධිකාරි පරීක්ෂා කරන්න
SHOW GRANTS FOR CURRENT_USER();
විසඳුම
ඇණවුම root ලෙස හෝ ප්රමාණවත් අධිකාරි ඇති පරිශීලකයෙකු ලෙස ක්රියාත්මක කරන්න.
අවශ්ය නම්:
GRANT ALTER USER ON *.* TO 'username'@'host';
FLUSH PRIVILEGES;
සටහන
- MySQL 8.0 හි
SYSTEM_USERඅධිකාරියද අවශ්ය විය හැක - නිෂ්පාදනයේ අවම අධිකාරි සංකල්පය අනුගමනය කරන්න
6.3 මුරපදය වෙනස් කිරීමෙන් පසු ලොග් ඉන් කළ නොහැක
ප්රධාන හේතු
- වැරදි Host
- සත්යාපන ප්ලග්ඉන් නොගැලපීම
- ගනුදෙනුකරු අනුකූල නොවීම
- යෙදුම් සැකසුම් යාවත්කාලීන නොකිරීම
① Host පරීක්ෂා කරන්න
SELECT User, Host FROM mysql.user WHERE User='username';
② සත්යාපන ප්ලග්ඉන් පරීක්ෂා කරන්න
SELECT plugin FROM mysql.user WHERE User='username';
③ සත්යාපන ප්ලග්ඉන් වෙනස් කරන්න (අවශ්ය නම්)
ALTER USER 'username'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'NewStrongPassword123!';
④ යෙදුම් සැකසුම් පරීක්ෂා කරන්න
.envconfig.php- සම්බන්ධතා ස්ට්රින් (DSN)
පොදු වැරදි
- MySQL වෙනස් කරන අතර යෙදුම යාවත්කාලීන නොකිරීම
- Docker පරිසරයේ කන්ටේනර් නැවත ආරම්භ නොකිරීම
6.4 වෙනස් කිරීමෙන් පසු පරණ මුරපදය සමඟත් ලොග් ඉන් කළ හැකිවීම
සාමාන්යයෙන්, ALTER USER සමඟ කරන වෙනස්කම් වහාම බලපැවැත්වේ.
සම්භවිත හේතු:
- ඔබ ඇත්තෙන්ම වෙනත් Host ගිණුමක් වෙනස් කර ඇත
- සම්බන්ධතාවය වෙනත් සේවාදායකයක් (ප්රතිලෝම) වෙත යොමු වී ඇත
- සැසිය කෑෂ් කිරීම
පරීක්ෂා කරන්න:
SELECT CURRENT_USER();
සම්බන්ධිත සේවාදායකය සහ සත්යාපිත පරිශීලකයා දෙදෙනාම නිවැරදිව තහවුරු කිරීම අත්යවශ්ය වේ.
7. ආරක්ෂාවේ මෙහෙයුම්: මුරපද ප්රතිපත්ති සහ හොඳම පිළිවෙත්
මුරපදයක් වෙනස් කිරීම එක වරක කාර්යයක් නොවේ.
ලෝක යථාර්ථ මෙහෙයුම්වලදී, ඔබ ශක්තිමත්කරණය, හිමිකම නිර්මාණය, සහ මෙහෙයුම් නීති ඒකාබද්ධ කිරීමෙන් ආරක්ෂාව පවත්වා ගනිමින් සිටියි.
7.1 validate_password ප්ලගිනය භාවිතා කිරීම
MySQL මුරපද ශක්තිය ප්රූෂ්ය කිරීම සඳහා බිල්ට්-ඉන් ක්රියාකාරිත්වය සපයයි.
වත්මන් සැකසුම් පරීක්ෂා කිරීම
SHOW VARIABLES LIKE 'validate_password%';
ප්රධාන සැකසුම් පරාමිතීන්
validate_password.length(අවම දිග)validate_password.policy(LOW / MEDIUM / STRONG)validate_password.mixed_case_countvalidate_password.number_countvalidate_password.special_char_count
උදාහරණ සැකසුම (අවම 12 අක්ෂර, MEDIUM ප්රතිපත්තිය)
SET GLOBAL validate_password.length = 12;
SET GLOBAL validate_password.policy = MEDIUM;
** සටහන **
- GLOBAL වෙනස්කම් නැවත ආරම්භයෙන් පසුව reset විය හැක
- සැකසුම් පද්ධතිමය ගොනුවේ (
my.cnf/my.ini) ඒවා සැකසීමෙන් ස්ථිරව තබා ගන්න
7.2 ශක්තිමත් මුරපද සඳහා අවම අවශ්යතා
පිළිපැදිය යුතු ප්රමිතීන් පිළිවෙත්වලදී:
- අවම වශයෙන් 12 අක්ෂර
- ලොකු අකුරු, කුඩා අකුරු, සංඛ්යා, සහ සංකේත ඇතුළත් කරන්න
- ශබ්දකෝෂ වචන වළක්වන්න
- අනෙකුත් සේවාවන් අනුව ඒවා නැවත භාවිතා නොකරන්න
උදාහරණය:
X9v!pQ4z#Lm2
** වළක්වා යුතු උදාහරණ **
password123
mysql2025
companyname!
7.3 වාර්ෂික වෙනස්කම්වලට වඩා වැදගත්
“සෑම මාස හයකට වරක් වෙනස් කිරීම” ට වඩා වැදගත් වන්නේ සම්භාව්ය අක්ෂර ගලා යාමේ උපකල්පනය යටතේ නිර්මාණය කිරීම යි.
① යෙදුම් පරිශීලකයින් වෙන් කරන්න
- යෙදුම්වල root භාවිතා නොකරන්න
- අවම හිමිකම් ඇති පරිශීලකයින් සාදන්න
උදාහරණය:
GRANT SELECT, INSERT, UPDATE ON dbname.* TO 'appuser'@'localhost';
② හිමිකම් අවම කරන්න (අවම හිමිකම් මූලධර්මය)
සම්භාව්ය හානිය සීමා කිරීම සඳහා අවශ්ය මෙහෙයුම් පමණක් ඉඩදෙන්න.
③ විමර්ශන සහ ලොග් භාවිතා කරන්න
උදාහරණ ලොග් පරීක්ෂාව:
tail -f /var/log/mysql/mysql.log
MySQL Enterprise විමර්ශන ප්ලගින් සඳහාද සහාය දක්වයි.
7.4 නිෂ්පාදන පරිසර සඳහා මෙහෙයුම් ඉඟි
- නිෂ්පාදන වෙනස්කම් කිරීමට පෙර staging හි පරීක්ෂා කරන්න
- වෙනස්කම් ඉතිහාසය ලුහුබඳින්න (Git හෝ ලේඛනගත කිරීම)
- වෙනස්කම්වලින් පසුව සෑම විටම සම්බන්ධතා පරීක්ෂාවක් ධාවනය කරන්න
- වැඩ කරන විට ඔබේ SSH session සක්රියව තබා ගන්න
7.5 ඔබ කිසිදු විටෙක කළ යුතු නැති දේ
- යෙදුම්වල root ගිණුම භාවිතා කිරීම
- මූලාශ්ර කේතයේ මුරපද hard-code කිරීම
validate_passwordඅක්රිය කිරීම සහ එහි තබා ගැනීම--skip-grant-tablesසමඟ සේවාදායකයා ධාවනය කර තබා ගැනීම
මුරපද කළමනාකරණය එක වරක කාර්යයක් නොවේ එයින් පසුව සිදුවන මෙහෙයුම් නිර්මාණයේ කොටසකි.
8. FAQ (පොදු ප්රශ්න)
8.1 ප්රශ්නය. මුරපදය වෙනස් කළ පසු සක්රිය sessions වලට කුමක් සිදුවේද?
උත්තරය. මූලධර්මය අනුව, නව සම්බන්ධතා නව මුරපදය අවශ්ය කරයි.
දැනටමත් ඇති sessions සඳහා, ඒවා හෝ ඉක්මනින් අවසන් කරනු ලැබේ හෝ පරිසරය සහ සැකසුම් අනුව සක්රියව තබා ගනු ලැබේ.
පිළිවෙත්වලදී:
- නිෂ්පාදනයේ ව්යාපාර කාලයෙන් පිටත වෙනස්කම් සිදු කරන්න
- සම්බන්ධතා refresh කිරීම සඳහා යෙදුම නැවත ආරම්භ කරන්න
එය නිර්දේශ කෙරේ.
8.2 ප්රශ්නය. මම මුරපදය වෙනස් කළත් තවමත් log in විය නොහැක
එයට හේතු තුනක් පොදුවේ:
- වැරදි Host (
localhostvs%, ආදිය.) - Authentication plugin mismatch (8.0 හි ඉතා පොදු)
- යෙදුම සැකසුම් update නොකළ
පරීක්ෂා කරන්න:
SELECT User, Host, plugin
FROM mysql.user
WHERE User='username';
plugin තීරුවට විශේෂ අවධානය යොමු කරන්න.
8.3 ප්රශ්නය. මට විශේෂිත පරිශීලකයෙකුට පමණක් මුරපද වෙනස් කිරීමට ඉඩදෙන්න පුළුවන්ද?
ඔව්.
GRANT ALTER USER ON *.* TO 'username'@'host';
FLUSH PRIVILEGES;
MySQL 8.0 හි, SYSTEM_USER හිමිකමද අවශ්ය විය හැක.
SHOW GRANTS FOR 'username'@'host';
හිමිකම් තහවුරු කිරීම සඳහා මෙය භාවිතා කරන්න.
8.4 ප්රශ්නය. MariaDB හි මෙම ක්රමය එකමද?
මූලික වශයෙන්, ALTER USER ලබා ගත හැක, නමුත්:
- Authentication plugins
- මුරපද ප්රතිපත්ති හැසිරීම
- සංස්කරණ-විශේෂිත වෙනස්කම්
පරිසරය අනුව වෙනස් විය හැක.
පරීක්ෂා කරන්න:
SELECT VERSION();
MySQL Community Edition මූලිකවම අභ්යන්තර මුරපද ඉතිහාස නිරීක්ෂණය ලබා නොදේ.
8.5 ප්ර. මුරපද වෙනස් කිරීමේ ඉතිහාසය පරීක්ෂා කළ හැකිද?
සම්භවිත ක්රම:
- පරීක්ෂණ ලොග් කිරීම සක්රිය කරන්න
- බාහිර ලොග් කළමනාකරණය භාවිතා කරන්න
- මෙහෙයුම් ලේඛනවල ඉතිහාසය නිරීක්ෂණය කරන්න
උදාහරණය:
tail -f /var/log/mysql/mysql.log
8.6 ප්ර. –skip-grant-tables භාවිතයෙන් root නොවන පරිශීලකයන් ප්රතිසාධනය කළ හැකිද?
ඔව්, නමුත් එය ඉතා අවදානම් තත්ත්වයක් සෑදේ.
පිළිවෙළ සම්පූර්ණ කළ පසු වහාම සාමාන්ය මාදිලියට ආපසු යන්න.
9. සාරාංශය
MySQL මුරපදයක් වෙනස් කිරීම සරල ලෙස පෙනේ, නමුත් user@host ආකෘතිය, සත්යාපන ප්ලගීන, සහ අවසර සැලසුම නොදැන සිටීමෙන් එය පහසුවෙන් ගැටළු ඇති කරයි.
මෙම ලිපියෙන් ප්රධාන කරුණු:
9.1 ALTER USER භාවිතා කිරීම ප්රමිතීකරණ ක්රමයක් ලෙස
ALTER USER 'username'@'localhost'
IDENTIFIED BY 'NewStrongPassword123!';
- MySQL 5.7 සහ ඊට පසු ප්රමිතීකරණ ක්රමය
- සෘජු
UPDATE mysql.userභාවිතය නිර්දේශ නොකෙරේ FLUSH PRIVILEGESසාමාන්යයෙන් අවශ්ය නොවේ
9.2 පරිශීලකයන් “user@host” ලෙස කළමනාකරණය වේ
localhostසහ%වෙනත් ගිණුම් වේ- එකම පරිශීලක නාමය සමඟ බහු ගිණුම් තිබිය හැක
SELECT User, Host FROM mysql.user;භාවිතයෙන් පරීක්ෂා කරන්න
9.3 8.0 හි සත්යාපන ප්ලගීනවලට අවධානය දෙන්න
- 8.0 පෙරනිමි:
caching_sha2_password - පරණ සමඟ අනුකූලතාව:
mysql_native_password - ඔබට සම්බන්ධ වීමට නොහැකි නම්,
pluginතීරුව පරීක්ෂා කරන්නSELECT plugin FROM mysql.user WHERE User='username';
9.4 root මුරපදය ප්රතිසාධනය කරන විට සැලකිලිමත් වන්න
--skip-grant-tablesතාවකාලික පියවරක් පමණයි- අවසන් කිරීමෙන් පසු සෑම විටම සාමාන්ය මාදිලියට ආපසු යන්න
- නිෂ්පාදනයේ නඩත්තු කාලය තුළ මෙය සිදු කරන්න
9.5 බොහෝ දෝෂවලට පැහැදිලි හේතු ඇත
- ERROR 1819 → මුරපද ප්රතිපත්තිය උල්ලංඝනය
- ERROR 1227 → අවශ්ය අවසර නොමැති
- ලොග් වීමට නොහැක → හෝස්ට් නොගැලපීම හෝ සත්යාපන ප්ලගීන් නොගැලපීම
9.6 ප්රායෝගිකව, අවම අවසර සහ මෙහෙයුම් සැලසුම වැඩි වැදගත්කමක් ගනී
- යෙදුම් තුළ root භාවිතා නොකරන්න
- කැපවූ පරිශීලකයන් සාදන්න
- ශක්තිමත් මුරපද ප්රතිපත්තීන් ක්රියාත්මක කරන්න
- වෙනස්කම් පසු සම්බන්ධතා සෑම විටම පරීක්ෂා කරන්න
MySQL මුරපද කළමනාකරණය මූලිකව අගයක් වෙනස් කිරීමක් පමණක් නොවේ—එය ආරක්ෂිත දත්ත ගබඩා මෙහෙයුම්වල පදනම වේ.
ඔබේ පරිසරයට සුදුසු ක්රමය තෝරා සවිස්තරාත්මකව ක්රියාත්මක කරන්න.


