Як додати нового користувача та призначити йому таблицю в MySQL. Основи.
September 2018 // 4 хвилини на читання // 174 перегляди
Для роботи з оточенням я довгий час використовував Denver, OpenServer, Docker, при цьому почував себе програмістом на всі 100 відсотків, адже знаю PHP і JS! Але сьогодні відчув себе нікчемою, коли при створенні нового проєкту налаштовував оточення в docker, і не зміг розібратися з базами даних протягом 3-х годин. Як підсумок цих мук, я вирішив заглибитись в основи і встановити все, що мені необхідно для роботи окремо.
UPD: Написавши цю статтю, я зрозумів, що помилка була пов’язана саме з версією mysql та її роботою з Laravel. Рішення знайшов, все добре, не хвилюйтеся 🙂
Після встановлення MySQL я зрозумів, що не знаю банальних речей, таких як створити користувача, створити базу даних, я навіть подивитися список баз даних біса не можу.
Загалом, у цій статті я опишу, як можна створити нового користувача в mysql, нову базу даних, призначити права для новоствореного користувача на певну базу даних. Ця стаття не навчальна, скоріше закріплююча мої «новознайдені» знання з налаштування MySQL.
Крок 0: Встановлення mysql сервера
Зрозуміло, що без встановленого mysql у вас нічого не вийде. Завантажити та встановити mysql можна з офіційного сайту.
Тут все просто:
- Завантажуємо MySQL community server
- Встановлюємо
- При встановленні вас попросять створити пароль для root користувача. Запам’ятовуємо його, він знадобиться в подальшому
Крок 1: Авторизуємося в базі даних під root користувачем
Перш ніж авторизуватися — переконайтеся, що mysql запущено. У mac OS запустити та зупинити його можна з розділу системних налаштувань.
Для авторизації в mysql під root користувачем слід використовувати таку команду для командного рядка:
mysql -u root -p
Після виконання команди — рядок попросить вас ввести той пароль, який ви задали при встановленні MySQL.
Якщо пароль неправильний — про це повідомить консоль, вивівши на екран таку інформацію:

Якщо пароль введено правильно, буде відображено запрошення введення sql команд:

Крок 2: Створюємо нову базу даних
Нова база даних може бути створена за допомогою такої команди:
CREATE DATABASE my_first_database;
my_first_database — назва бази даних
Після виконання команди — MySQL повідомить про успішне створення бази, вивівши на екран консолі Query OK, 1 row affected (0.04 sec)
Ця відповідь означає, що база успішно створена. Але давайте в цьому переконаємося, виконавши команду, яка покаже список всіх створених баз даних:
SHOW DATABASES;
Результатом виконання стане список всіх створених баз даних.
Як ми бачимо — у списку присутня наша база з іменем my_first_database, а отже, можна переходити до наступного кроку.
Крок 3: Створюємо нового користувача
За аналогією з попереднім кроком, для створення нового користувача слід ввести таку команду:
CREATE USER 'my_first_user'@'localhost' IDENTIFIED BY 'password';
my_first_user — ім’я користувача password — пароль
Результат виконання цієї команди має бути:
Query OK, 0 rows affected (0.04 sec)
А команда нижче покаже список всіх користувачів, створених у MySQL:
SELECT User FROM mysql.user;
Виконавши цю команду, можна переконатися, що наш новостворений користувач присутній у списку.

Крок 4: Призначаємо користувачу привілеї для редагування бази даних
Незважаючи на те, що користувач створений, він як і раніше не може бути авторизований в базі даних, оскільки в нього ще немає привілеїв для перегляду хоча б однієї з баз.
Для призначення привілеїв користувачу слід використовувати таку команду:
GRANT ALL PRIVILEGES ON my_first_database.* TO 'my_first_user'@'localhost';
*my_first_database.** — означає, що користувач може керувати всіма таблицями в базі даних my_first_database. Якщо необхідно дати управління тільки однією таблицею, замість символу * слід вказати її назву. Наприклад my_first_database.customers
my_first_user — вказує на користувача, якому призначаються права;
ALL PRIVILEGES — тип прав, рядок all — означає, що користувачеві надаються всі права, але їх можна передати окремо:
- ALL PRIVILEGES — як ми бачили раніше, це дасть користувачеві MySQL повний доступ до заданої бази даних (якщо база даних не вказана, то до всіх).
- CREATE — дозволяє створювати нові таблиці або бази даних.
- DROP — дозволяє видаляти таблиці або бази даних.
- DELETE — дозволяє видаляти рядки з таблиць.
- INSERT — дозволяє додавати рядки в таблицю.
- SELECT — дозволить використовувати команду Select для читання з баз даних.
- UPDATE — дозволить редагувати рядки таблиць.
- GRANT OPTION — дозволить призначати або видаляти права доступу для інших користувачів.
Після виконання команди на створення привілеїв для користувача, пропоную переконатися, що зараз все працює так, як потрібно.
Крок 5: Переконаємося, що все працює правильно
- Відкриємо нову вкладку командного рядка і спробуємо авторизуватися:
mysql -u my_first_user -p
- Введемо пароль password, який ми задавали для цього користувача.
- Виведемо список всіх баз даних, які доступні користувачу:
SHOW DATABASES;
- Виберемо базу даних, яку ми створили:
USE my_first_database;
- Створимо таблицю в базі:
CREATE TABLE customers (
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL
);
- Переконаємося, що таблиця створена:
SHOW TABLES;
- Додамо запис у таблицю:
INSERT INTO customers SET
firstname = 'demo',
lastname='user';
- Переконаємося, що запис було створено:
SELECT * FROM customers WHERE 1;
- Видалимо запис з таблиці:
DELETE FROM customers WHERE firstname = 'demo';
- Переконаємося, що видалення успішне:
SELECT * FROM customers WHERE 1;
- Видалимо таблицю з бази:
DROP TABLE customers;
- Переконаємося, що видалення успішне:
SHOW TABLES;
Як бачите, ми можемо повноцінно керувати створеною базою даних.