MySQL е сред най-популярните мениджъри на бази данни в света. Той съдържа много функции, които го правят надежден, ефективен и здрав. Неговата максимална надеждност се постига, ако се използва правилно. Създаването на потребители с ограничени разрешения в базата данни е един от най-лесните и надеждни начини за повишаване на сигурността на MySQL.
Потребител за създаване на MySQL
Когато инсталирате MySQL, основният потребител (администратор на MySQL) е първият потребител, който ще бъде създаден. На root потребителя е позволено да прави всичко и всичко в базата данни на MySQL. Удобно е други хора да имат достъп до вашата база данни чрез този акаунт.
Злонамерените потребители могат да се опитат да влязат като root потребители, за да откраднат хостваната информация или да унищожат услугата заедно с данните. Следователно системният администратор трябва да създаде потребители със специфични разрешения за базата данни. Това гарантира, че ако сигурността на този потребител е компрометирана, въздействието е минимално или управляемо.
Изявлението на MySQL Create User ви позволява да създадете нов потребителски акаунт в сървъра на базата данни. Той предоставя свойства за удостоверяване, ограничение на ресурсите, роля и управление на пароли за новите акаунти. Изявлението също така ни позволява да контролираме акаунтите, които трябва да бъдат заключени или отключени.
За да създадете потребител, е необходимо да имате глобална привилегия (да бъдете root потребител) на оператора „CREATE USER“ или привилегията INSERT за системната схема на MySQL. Появява се грешка, ако се опитате да създадете потребител, който вече съществува, но ако използвате клаузата „АКО НЕ СЪЩЕСТВУВА“, операторът дава предупреждение за всеки вече съществуващ потребител с име вместо съобщение за грешка.
За да създадем потребител без root и да му предоставим специфични привилегии за достъп и промяна на базата данни, ние използваме следния синтаксис:
CREATE USER IF NOT EXISTS 'fosslinux'@'localhost' IDENTIFIED BY 'foss12345';
Account_name има две части; потребителското име и името на хоста, разделени със символа @. Потребителското име е името на потребителя, докато името на хоста е името на хоста, от който потребителят може да се свърже със сървъра на базата данни.
username@hostname
Името на хоста е по избор. Ако името на хоста не е дадено, потребителят може да се свърже от всеки хост на сървъра. Име на потребителски акаунт без име на хост може да бъде написано като потребителско име@%
CREATE USER IF NOT EXISTS 'fosslinux@%' IDENTIFIED BY 'foss12345';
Имайте предвид, че операторът create user създава нов потребител с пълен достъп. за да дадете привилегии на потребителя, използвайте израза GRANT
Използвайте следните стъпки, за да създадете нов потребител в базата данни MySQL:
1. С помощта на клиентския инструмент MySQL отворете MySQL сървъра
2. Въведете паролата, след което натиснете Enter.
3. Създайте нов потребител, като използвате следната команда
create user 'foss'@'localhost' identified by 'foss12345';
4. Използвайте следната команда, за да покажете потребителите в MySQL сървъра
select user from mysql.user;
От показания изход потребителят „foss“ е създаден успешно.
5. Сега използвайте клаузата IF NOT EXISTS с израза CREATE USER, като изпълните следната команда:
Предоставяне на привилегии на новия потребител на MySQL
Някои от най-често срещаните привилегии, предоставяни от MySQL сървъра на нов потребител, включват;
1. ВСИЧКИ ПРИВИЛЕГИИ: разрешава всички привилегии за нов потребителски акаунт
2. СЪЗДАВАНЕ: позволява на потребителския акаунт да създава бази данни и таблици
3. ИЗПУСКАНЕ: позволява на потребителския акаунт да изпуска бази данни и таблици
4. ИЗТРИВАНЕ: позволява на потребителския акаунт да изтрива редове от конкретна таблица
5. ВЪВЕТЕ: позволява на потребителския акаунт да вмъква редове в конкретна таблица
6.ИЗБЕРЕТЕ: позволява на потребителския акаунт да чете база данни
7. АКТУАЛИЗИРАНЕ: позволява на потребителски акаунт да актуализира редовете на таблица
Изпълнете следната команда, за да предоставите всички привилегии на потребител
GRANT ALL PRIVILEGES ON *.* TO 'foss'@'localhost';
Изпълнете следната команда, за да дадете конкретни привилегии на новосъздадения потребител,
GRANT CREATE, SELECT, INSERT ON *.* TO 'foss'@'localhost';
За да изтриете всички привилегии, които са присвоени на потребител, изпълнете командата по-долу.
FLUSH PRIVILEGES;
За да видите съществуващите привилегии, присвоени на потребител, изпълнете следната команда.
SHOW GRANTS FOR 'foss'@'localhost';
MySQL Drop User
Изявлението на MySQL Drop User ви позволява да премахнете един или повече потребителски акаунти и техните привилегии от сървъра на базата данни. Ако потребителският акаунт не съществува в сървъра на базата данни, той ще върне грешка.
За да използвате оператора Drop User, трябва да имате глобална привилегия или привилегия DELETE за системната схема на MySQL.
Синтаксисът за изтриване на потребителски акаунти от сървъра на базата данни е както следва:
DROP USER 'foss'@'localhost';
Забележка: Името на акаунта в примера по-горе е идентифицирано като потребителско име@име на хост. Потребителското име е името на акаунта, който искате да изтриете от сървъра на базата данни, а името на хоста е името на сървъра на потребителския акаунт. например „foss@localhost“. фос е потребителското име, докато localhost е името на хоста.
По-долу са стъпките, които трябва да следвате, когато изтривате съществуващ потребител от базата данни на MySQL сървъра;
1. С помощта на клиентския инструмент MySQL отворете MySQL сървъра
2. Въведете паролата за акаунта, след което натиснете Enter
3. За да премахнете потребителски акаунт, изпълнете следната команда
DROP USER 'fosslinux'@'localhost';
4. Изпълнете следната команда, за да покажете на потребителите
select user from mysql.user;
Ще получите изход, в който потребителското име fosslinux няма да присъства, както е показано по-долу:
5. Потребителят Drop може да се използва и за премахване на повече от един потребителски акаунти наведнъж. За да направите това, разделяте account_names със запетаи.
Забележка: Тъй като вече бяхме изхвърлили потребителите, ще създадем двама потребители, използвайки концепциите за създаване на потребители (fosslinuxtuts и fosslinux@%). След това ще изпълним командата в стъпка 4, за да покажем съществуващите потребители, както е показано по-долу:
Сега пуснете двата потребителя едновременно, като използвате командата по-долу:Изпълнете следната команда, за да премахнете и двамата потребители:
DROP USER 'fosslinuxtuts'@'localhost', 'fosslinux@%' ;
Имайте предвид, че операторът DROP не може автоматично да затвори отворени потребителски сесии. Когато операторът DROP се изпълнява, докато сесията на потребителски акаунт е активна, командата не го засяга, докато сесията му не бъде затворена. Потребителският акаунт отпада само когато сесията бъде затворена и следващият опит на потребителя няма да може да влезе отново.
MySQL показва потребители/списък на всички потребители
За да управлявате база данни в MySQL, трябва да видите списъка с всички потребителски акаунти в база данни. Хората предполагат, че има команда SHOW USERS, подобна на SHOW DATABASE или SHOW TABLES за показване на списъка с всички потребители, налични в сървъра на базата данни. За съжаление, MySQL сървърът няма команда SHOW USERS за показване на списък с всички потребители в MySQL сървъра. Затова вместо това използваме следната заявка, за да видим списъка с всички потребители в сървъра на базата данни:
Select user from mysql.user;
След като изпълните командата, ще получите потребителските данни от потребителската таблица на сървъра на базата данни MySQL.
Забележка: В този пример ще използваме базата данни MySQL. Изберете базата данни, като изпълните командата по-долу, след което използвайте оператора за избор от, за да проверите съществуващите потребители, както е показано на изображението по-долу:
use mysql;
SELECT user FROM user;
Ако искате да видите повече информация за потребителската таблица, изпълнете следната команда:
DESC user;
Командата ще даде следния изход, който изброява всички налични колони на базата данни mysql.user:
За да получите избрана информация като име на хост, състояние на изтичане на паролата и заключване на акаунт, изпълнете следната заявка:
SELECT user, host, account_locked, password_expired FROM user;
След успешното изпълнение на заявката ще се появи следният изход:
Показване на текущия потребител
Можете да получите информация за текущия потребител, като използвате функцията user() или current_user(), както е показано по-долу:
Select user();
ИЛИ
Select current_user();
След успешното изпълнение на някоя от горните команди ще се появи следният изход.
Показване на регистрирания в момента потребител
Можете да видите потребител, който в момента е влязъл в сървъра на базата данни, като използвате следната команда в MySQL сървъра:
SELECT user, host, db, command FROM information_schema.processlist;
Горните команди извеждат екран, подобен на показания по-долу:
Как да променя потребителската парола за MySQL
MySQL потребителските записи съдържат информацията за влизане, привилегиите на акаунта и информацията за хоста за MySQL акаунт за достъп и управление на базата данни. Информацията за вход включва потребителско име и парола. Поради това може да има нужда от промяна на потребителската парола в базата данни MySQL.
За да промените паролата за всеки потребителски акаунт, не забравяйте да имате предвид следната информация:
- Подробности за потребителския акаунт, който трябва да се промени
- Приложението се използва от потребителския акаунт, чиято парола трябва да бъде променена. Ако паролата на потребителския акаунт е била нулирана без промяна на низ за връзка на приложението, приложението не може да се свърже със сървъра на базата данни.
MySQL ви позволява да промените паролата на потребителския акаунт по три различни начина:
- Изявление UPDATE
- Изявление SET PASSWORD
- Изявление ALTER USER
Промяна на паролата за потребителски акаунт чрез оператора UPDATE
След като изпълним оператора UPDATE, ние използваме оператора FLUSH PRIVILEGE, за да презаредим привилегиите от таблицата за предоставяне на базата данни MySQL.
Да предположим, че искате да промените паролата за потребителски акаунт foss, който се свързва от локалния хост с паролата foss12345, изпълнете следната команда:
USE mysql;
UPDATE user SET password=password('kip12345') WHERE user='foss';
FLUSH PRIVILEGES;
Горното изявление няма да работи на MySQL версия 5.7.6 или по-нова, тъй като таблицата с потребители на MySQL съдържа колоната с низ за удостоверяване, която съхранява само паролата. По-високите версии имат колоната низ за удостоверяване в оператора UPDATE, както е показано в следния израз:
USE mysql;
UPDATE user SET authentication_string = password('foss12345') WHERE user = 'foss';
FLUSH PRIVILEGES;
Забележка: Този метод работи само с по-стари версии на MySQL. Ето защо, ако имате по-нови или най-нови версии на MySQL, преминете към другите методи.
Промяна на паролата за потребителски акаунт чрез оператор SET PASSWORD
Ако искате да промените паролата за друг акаунт, трябва да имате привилегията UPDATE. Изявлението използва потребителския акаунт в следния формат:username@localhost
Презареждането на привилегии от rant таблиците на MySQL базата данни с помощта на FLUSH PRIVILEGES не е необходимо да се използва. За да промените паролата на потребителския акаунт (foss) с помощта на оператора SET PASSWORD, използвайте следния израз:
SET PASSWORD FOR 'foss'@'localhost' = PASSWORD('foss12345');
Ако използвате MySQL версия 5.7.6 или по-нова, горният израз е отхвърлен и няма да работи в бъдещи издания. Вместо това използвайте следното изявление;
SET PASSWORD FOR 'foss'@'localhost' = 'foss12345';
Промяна на паролата за потребителски акаунт чрез оператор ALTER USER
MySQL използва оператор ALTER USER с клаузата IDENTIFIED BY. За да направите това, използвате следния синтаксис:
ALTER USER 'foss'@'localhost' IDENTIFIED BY 'foss12345';
Може да се наложи да нулирате паролата за root акаунт на MySQL. За да направите това, можете да спрете принудително и след това да рестартирате сървъра на базата данни MySQL, без да използвате валидиране на таблицата за предоставяне.
Заключение
Тази статия обхваща изчерпателно всички аспекти относно управлението на потребителите на MySQL. Вярваме, че е достатъчно подробен, за да ви предостави решения на вашите проблеми. Ако срещнете грешки или трудности, докато показвате на потребителите, използващи MySQL, моля, свържете се за помощ чрез секцията за коментари. Благодаря за четенето.