15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало
01.11.2024
1 +1

Как да създадете нов потребител и да зададете разрешения в MySQL

MySQL остава една от най-широко разпространените системи за управление на релационни бази данни в света, захранвайки всичко от малки лични проекти до приложения в мащаб на предприятия. Независимо дали сте разработчик, системен администратор или собственик на бизнес, управляващ собствената си инфраструктура, разбирането как да създавате MySQL потребители и да конфигурирате техните разрешения е незаменим навик за поддържане на защитена, добре организирана среда на база данни.

Лошото управление на потребителите е една от водещите причини за нарушения на базите данни. Предоставянето на прекомерни привилегии, преизползване на учетни данни или оставяне на активни подразбиращи се акаунти може да изложи целия ви слой данни на ненужен риск. Това ръководство ви преведе през целия процес — от влизане в MySQL до проверка на разрешенията — с ясни команди, практически примери и най-добри практики за сигурност на всяка стъпка.

Защо управлението на потребителите в MySQL е важно

Преди да се потопим в командите, си струва да разберем *защо* това е важно. MySQL работи на принцип на най-малко привилегия: всеки потребител трябва да има достъп само до конкретните бази данни, таблици и операции, които наистина има нужда. Това минимизира радиуса на взрив на компрометиран акаунт и прави одита много по-лесна.

Ако управлявате MySQL на управляван VPS Hosting план или Dedicated Server, имате пълен root-ниво достъп до вашия MySQL екземпляр, което ви дава пълен контрол над създаването на потребители и управлението на разрешенията. Много среди на контролни панели — като тези, налични с VPS с cPanel — също предоставят графичен интерфейс за управление на MySQL, който може да допълни командния ред подход, описан тук.

Предварителни условия

Преди да започнете, уверете се, че имате:

  • MySQL 5.7+ или MySQL 8.0+ инсталиран и работещ на вашия сървър
  • Root достъп или достъп до MySQL суперпотребителски акаунт с GRANT OPTION привилегии
  • Достъп до терминал (Linux/macOS) или Command Prompt / PowerShell (Windows)

Стъпка 1: Влизане в MySQL

За управление на потребители и разрешения, трябва да се удостоверите като потребител с достатъчни административни привилегии. В повечето случаи, това е root акаунт.

Отворете вашия терминал или Command Prompt

  • Linux / macOS: Отворете вашето терминално приложение
  • Windows: Отворете Command Prompt или PowerShell

Свързване към MySQL сървъра

Изпълнете следната команда:

mysql -u root -p

Ще бъдете подканени да въведете root парола. След успешното удостоверяване, ще видите MySQL подсказката:

mysql>

> Съвет за сигурност: Ако се свързвате към отдалечен MySQL сървър, посочете хоста с флага -h:

> “`bash

> mysql -u root -p -h your_server_ip

> “`

Стъпка 2: Създаване на нов MySQL потребител

След като сте вътре в MySQL shell, можете да създадете нов потребител с изявлението CREATE USER.

Синтаксис

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

Разбор на параметрите:

ПараметърОписание
usernameИмето, което искате да присвоите на новия потребител
hostХостът, от който потребителят е разрешен да се свързва. Използвайте localhost за достъп само на локално или % като заместител за всеки хост
passwordСилна, уникална парола за този потребител

Пример: Създаване на потребител, достъпен от всеки хост

CREATE USER 'newuser'@'%' IDENTIFIED BY 'StrongP@ssw0rd!';

Пример: Създаване на потребител, ограничен до Localhost

CREATE USER 'localuser'@'localhost' IDENTIFIED BY 'AnotherStr0ng#Pass';

> Най-добра практика: Където е възможно, ограничете потребителите до localhost или конкретен IP адрес, вместо да използвате %. Достъпът на заместител хост увеличава вашата повърхност на атака ненужно.

MySQL 8.0 забележка за приставки за удостоверяване

MySQL 8.0 представи caching_sha2_password като приставка за удостоверяване по подразбиране, което може да причини проблеми със съвместимостта със по-стари клиенти или приложения. Ако е необходимо, можете да зададете явно метода на удостоверяване:

CREATE USER 'newuser'@'%' IDENTIFIED WITH mysql_native_password BY 'StrongP@ssw0rd!';

Стъпка 3: Предоставяне на разрешения на потребителя

Създаването на потребител не предоставя автоматично достъп до никоя база данни. Трябва явно да присвоите привилегии, използвайки изявлението GRANT.

Синтаксис

GRANT privileges ON database.table TO 'username'@'host';

Разбор на параметрите:

ПараметърОписание
privilegesРазделен със запетаи списък на разрешенията (напр. SELECT, INSERT, UPDATE, DELETE) или ALL PRIVILEGES
database.tableОбхватът на дарението. Използвайте *.* за всички бази данни и таблици, dbname.* за всички таблици в конкретна база данни, или dbname.tablename за една таблица
username@hostЦелевия потребителски акаунт

Общи MySQL привилегии

ПривилегияОписание
SELECTПрочитайте данни от таблици
INSERTДобавете нови редове към таблици
UPDATEМодифицирайте съществуващи редове
DELETEПремахнете редове от таблици
CREATEСъздайте нови бази данни или таблици
DROPИзтрийте бази данни или таблици
INDEXСъздайте или пуснете индекси
ALTERМодифицирайте структури на таблици
ALL PRIVILEGESПълен достъп (използвайте с предпазливост)
GRANT OPTIONПозволете на потребителя да предоставя привилегии на други

Пример: Предоставяне на пълен достъп до конкретна база данни

GRANT ALL PRIVILEGES ON exampledb.* TO 'newuser'@'%';

Пример: Предоставяне на достъп само за четене

GRANT SELECT ON exampledb.* TO 'readonly_user'@'localhost';

Пример: Предоставяне на конкретни привилегии на една таблица

GRANT SELECT, INSERT, UPDATE ON exampledb.orders TO 'app_user'@'localhost';

Пример: Предоставяне на глобални привилегии (използвайте рядко)

GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'localhost' WITH GRANT OPTION;

> Предупреждение: Предоставянето на ALL PRIVILEGES ON *.* дава на потребителя еквивалентен суперпотребителски достъп. Резервирайте това само за доверени административни акаунти.

Стъпка 4: Изчистване на привилегии

След като направите промени в разрешенията на потребителя, е добра практика да преустановите таблиците на привилегии, така че MySQL веднага да признае вашите промени:

FLUSH PRIVILEGES;

> Забележка: В съвременни версии на MySQL (5.7.3+), FLUSH PRIVILEGES се задейства автоматично след GRANT, REVOKE и CREATE USER изявления. Въпреки това, изпълнението му явно след ръчни редакции на mysql системни таблици (чрез INSERT или UPDATE) остава съществено.

Стъпка 5: Проверка на разрешенията на потребителя

Винаги потвърдете, че разрешенията, които сте задали, са правилни, преди да поставите потребителски акаунт в производство.

Проверка на дарения за конкретен потребител

SHOW GRANTS FOR 'newuser'@'%';

Примерен резултат:

+--------------------------------------------------------------+
| Grants for newuser@%                                         |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO `newuser`@`%`                          |
| GRANT ALL PRIVILEGES ON `exampledb`.* TO `newuser`@`%`       |
+--------------------------------------------------------------+

Списък на всички MySQL потребители

SELECT user, host FROM mysql.user;

Проверка на собствените привилегии на текущия потребител

SHOW GRANTS;

Стъпка 6: Отмяна на разрешения (когато е необходимо)

Разрешенията се променят с течение на времето. Когато потребител вече не се нуждае от определен достъп, отмяна го незабавно, използвайки изявлението REVOKE:

Синтаксис

REVOKE privileges ON database.table FROM 'username'@'host';

Пример: Отмяна на всички привилегии от потребител

REVOKE ALL PRIVILEGES ON exampledb.* FROM 'newuser'@'%';
FLUSH PRIVILEGES;

Пример: Отмяна на конкретна привилегия

REVOKE DELETE ON exampledb.orders FROM 'app_user'@'localhost';

Стъпка 7: Пускане на потребител (когато е необходимо)

Ако потребителски акаунт вече не е необходим, премахнете го напълно, за да елиминирате ненужни вектори на достъп:

DROP USER 'newuser'@'%';

Тази команда премахва потребителския акаунт и всички свързани привилегии в една операция.

Управление на MySQL потребители в хостирани среди

Ако управлявате MySQL в среда на споделено или управлявано хостване, процесът може да се различава леко в зависимост от вашия контролен панел. Платформи като cPanel, Plesk и DirectAdmin предоставят графични интерфейси за създаване на MySQL потребители и присвояване на разрешения без писане на SQL директно.

За потребители, които имат нужда от пълен контрол на командния ред без режийни разходи на посветен сървър, VPS Hosting планите предлагат идеалния баланс на производителност, гъвкавост и цена. Ако управлявате приложения с интензивна база данни, които изискват максимална пропускливост и изолирани ресурси, помислете за надграждане до Dedicated Server за гарантирана производителност.

За по-малки проекти или среди за разработка, Shared Web Hosting планите обикновено включват phpMyAdmin достъп, който предоставя браузър-базиран интерфейс за управление на MySQL потребители и база данни.

Освен това, ако вашето приложение обработва чувствителни потребителски данни, сдвояването на вашия сървър на база данни с валиден SSL Certificate гарантира, че дан

15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало