Установка и настройка MariaDB, phpMyAdmin, пользователей и репликации

From wiki.baghirzade.pro
Revision as of 12:07, 10 October 2025 by Sadmin (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

🛠️ Установка и настройка MariaDB, phpMyAdmin, пользователей и репликации

Полный мануал по работе с MariaDB: установка, настройка phpMyAdmin, создание таблиц, пользователей с разными правами, сброс пароля root и репликация (master/slave).


📦 1. Установка MariaDB

sudo yum install mariadb mariadb-server -y
sudo systemctl enable --now mariadb
sudo mysql_secure_installation

Ответы на вопросы:

  • Switch to unix_socket authentication? → n
  • Remove anonymous users? → n
  • Disallow root login remotely? → n
  • Remove test database? → y
  • Reload privilege tables? → y

🌐 2. Установка phpMyAdmin и настройка Apache

sudo yum install php php-mysqlnd httpd epel-release phpmyadmin -y
sudo systemctl enable --now httpd

Настройка доступа:

sudo vim /etc/httpd/conf.d/phpMyAdmin.conf

Измените:

  • добавьте Require all granted внутри <RequireAny>
  • или добавьте ваш IP (Require ip X.X.X.X)

🗃️ 3. Создание базы и таблицы

mysql -u root -p
CREATE DATABASE cafeparis;
USE cafeparis;

-- Шаг 3.1
CREATE TABLE menu (
  ID INT AUTO_INCREMENT PRIMARY KEY
);

-- Шаг 3.2
ALTER TABLE menu
ADD COLUMN NAME VARCHAR(20),
ADD COLUMN COMPOSITION VARCHAR(20),
ADD COLUMN CUISINE VARCHAR(20),
ADD COLUMN IMPORTANTOKNOW VARCHAR(20);

-- Шаг 3.3
ALTER TABLE menu ADD COLUMN CREATED TIMESTAMP DEFAULT CURRENT_TIMESTAMP;

👥 4. Создание пользователей

CREATE USER 'chief'@'%' IDENTIFIED BY '123';
CREATE USER 'souschief'@'localhost' IDENTIFIED BY '123';
CREATE USER 'cook'@'%' IDENTIFIED BY '123';

🔐 Права пользователей:

  • chief — полный доступ:
GRANT ALL PRIVILEGES ON *.* TO 'chief'@'%' WITH GRANT OPTION;
  • souschief — только SELECT и только с localhost:
GRANT SELECT ON cafeparis.* TO 'souschief'@'localhost';
  • cook — SELECT, UPDATE, DELETE из любой точки:
GRANT SELECT, UPDATE, DELETE ON cafeparis.* TO 'cook'@'%';
  • Разные права с разных IP:
CREATE USER 'cook'@'192.168.1.100' IDENTIFIED BY '123';
GRANT SELECT ON cafeparis.* TO 'cook'@'192.168.1.100';

CREATE USER 'cook'@'192.168.1.200' IDENTIFIED BY '123';
GRANT SELECT, UPDATE, DELETE ON cafeparis.* TO 'cook'@'192.168.1.200';

Проверка роли — при подключении будет применяться наиболее точное совпадение (user@ip > user@%).

FLUSH PRIVILEGES;

🔄 5. Сброс пароля root в MariaDB

sudo systemctl stop mariadb
sudo mysqld_safe --skip-grant-tables &
mysql -u root
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('pas321');
FLUSH PRIVILEGES;
EXIT;
sudo killall -9 mysqld_safe
sudo systemctl start mariadb

🌐 6. Репликация Master-Slave (общее представление)

📌 На Master:

sudo vim /etc/my.cnf.d/mariadb-server.cnf

Добавьте:

[mysqld]
bind-address=0.0.0.0
server-id=1
log_bin=mysql-bin
binlog_do_db=cafeparis
sudo systemctl restart mariadb

Создайте пользователя для репликации:

CREATE USER 'replica'@'%' IDENTIFIED BY 'replica_pass';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
FLUSH PRIVILEGES;

Получите текущие координаты:

SHOW MASTER STATUS;

📍 На Slave:

sudo vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
server-id=2
relay_log=relay-bin
log_bin=mysql-bin
read_only=1
sudo systemctl restart mariadb

Подключение к мастер-серверу:

CHANGE MASTER TO
  MASTER_HOST='master_ip',
  MASTER_USER='replica',
  MASTER_PASSWORD='replica_pass',
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=XXX;

START SLAVE;
SHOW SLAVE STATUS\G

🎯 Готово! MariaDB работает, пользователи созданы, phpMyAdmin установлен, и репликация настроена 🛠️