====== MySQL (MariaDB) ====== Сервер базы данных.\\ ===== Установка ===== apt install mariadb-server mysql_secure_installation Основные конфиги находятся в папке **/etc/mysql/mariadb.conf.d/**.\\ Настройки сервера **50-server.cnf**.\\ ===== Администрирование ===== После установки, командой **# mysql -u root -p** можно подключится и под системным linux-root и под mysql-root.\\ **Бэкапирование БД** mysqldump `namedb` > \..\filename.sql mysqldump --databases db1 db2 [--all-databases] > \..\filename.sql # Развернуть из бэкапа mysql [`namedb`] < \..\filename.sql ===== Примеры =====
:!: Администрирование # Запуск команды **mysql** без sudo SET PASSWORD = PASSWORD('your-pass'); update mysql.user set plugin = 'mysql_native_password' where User='root'; FLUSH PRIVILAGES; # Очистка таблицы + сброс инкремента truncate table `table`;
:!: Базы SHOW DATABASES; use db1; SHOW CREATE DATABASE namedb; CREATE DATABASE db1 default character set utf8 default collate utf8_general_ci; CREATE TABLE table1 (Id int, str1 varchar(45)); CREATE TABLE zbx_alerts ( id INT auto_increment NOT NULL, date_start varchar(45) NULL, `level` varchar(45) NULL, host varchar(45) NULL, `trigger` varchar(45) NULL, duration_min varchar(45) NULL, primary key (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
:!: Пользователи SELECT User,Host from mysql.user; CREATE USER 'admin'@'localhost' IDENTIFIED BY 'mypassword'; GRANT [REVOKE] ALL PRIVILEGES ON db1.* TO 'admin'@'localhost'; CREATE USER 'admin'@'%' IDENTIFIED BY 'mypassword'; SHOW GRANTS FOR 'user'; FLUSH PRIVILEGES; * **ALL PRIVILEGES** - все, кроме GRANT; * **USAGE PRIVILEGES** - никаких привилегий; * **SELECT,INSERT,UPDATE,DELETE** * **CREATE** - создавать таблицы или базы данных; * **ALTER** - изменять структуру таблиц; * **DROP** - удалять таблицы;
:!: В разработке **Создание таблицы** create table `table_name` (`col1` int(11) not null auto_increment, `col2` varchar(45) not null, primary key(`id`) ) engine=innodb default charset=utf8 comment='Примечание'; **Копирование данных из одной таблицы в другую**\\ При условии что кол-во столбцов совпадает. insert into `target_table` select from `source_table`; С дополнением статических, в т.ч. авто-инкремент, целевой таблице так же, можно задать перечень столбцов insert into `target_table` select 0, 'value', `col1`, `col2` from `source_table`; **Переворот значения в ячейке** update `table` set `col1`= not `col1` where *; **Условие выбора**\\ На примере проверки даты if(`date` = CurDate(), 'Сегодня', if(`date`= CurDate() - interval 1 day, 'Вчера', date_format(`date`, '%d %b'))) select if(1=1, 'true', 'false'); **Объединение запросов**\\ Объединяет несколько запросов в один результат, необходимо что бы кол-во столбцов было одинаковым, названия берется из первого запроса\\ select `col1`, `col2` from `tab1` union select `col1`, `col2` from `tab2` order by `col1` asc; **Усечение строки**\\ Применяется ко всему столбцу, укорачиваем строку на 8 символов update `table1` set `col1`= substring(`col1`, 1, (length(`col1`)- 8)); **Переменные**\\ SELECT @start := 1, @finish := 10; SELECT * FROM places WHERE place BETWEEN @start AND @finish;
:!: Администрирование # Запуск команды **mysql** без sudo SET PASSWORD = PASSWORD('your-pass'); update mysql.user set plugin = 'mysql_native_password' where User='root'; FLUSH PRIVILAGES; # Очистка таблицы + сброс инкремента truncate table `table`;
:!: В разработке. MSSQL **Создание таблицы**\\ create table db-name.dbo[схема].table-name (id int IDENTITY(1,1) PRIMARY KEY, field1 nvarchar(max) not null); **Удаление таблицы с проверкой существования**\\ if object_id('dbname.dbo.tab_test', 'U') is not null drop table dbname.dbo.tab_test; # MSSQL 2016 drop table if exists dbname.dbo.tab_test;