====== Сервис MySQL ======
===== Установка =====
==== Debian/Ubuntu ====
* на все вопросы о пароле пользователя root нажимаем "Enter"
* ставится 3-4 минуты
debian# apt install default-mysql-server
ubuntu20# apt install mysql-server
==== FreeBSD ====
freebsd11# pkg install mysql56-server
[server:~] # sysrc mysql_enable=yes
[server:~] # service mysql-server start
==== Windows ====
[[http://dev.mysql.com/downloads/installer/]]
или
[[http://www.apachefriends.org/en/xampp.html]]
shell> cd C:\xampp\mysql\bin\
===== Настройка кодировки UTF-8 =====
# cat /etc/mysql/conf.d/utf8.cnf
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
skip-character-set-client-handshake
===== Управление параметрами сервера =====
# cat /etc/mysql/conf.d/my-custom-settings.cnf
[mysqld]
sql_mode=""
innodb_strict_mode=OFF
# service mysql restart
===== Смена пароля пользователя root =====
* [[https://mariadb.com/kb/en/authentication-plugin-unix-socket/|Authentication Plugin - Unix Socket]]
* [[https://www.rosehosting.com/blog/how-to-reset-your-mariadb-root-password/|How to reset your MariaDB root password?]]
==== MariaDB ====
MariaDB [(none)]> ALTER USER root@localhost IDENTIFIED VIA mysql_native_password;
MariaDB [(none)]> SET PASSWORD = PASSWORD('12345678');
# service mysql restart
==== MySQL, начиная c версии 5.7 ====
* [[https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/|Change user password in MySQL 5.7 with “plugin: auth_socket”]]
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678';
==== MySQL, до версии 5.7 ====
# mysqladmin --user=root password somepassword
# mysqladmin --user=root --password reload
===== Подключение =====
==== В интерактивном режиме ====
# mysql -u root -p
Welcome to the MySQL monitor. Commands end with ; or \g.
...
mysql> exit
==== Из командной строки ====
# mysql billing -u billing --password=XXX -B --skip-column-names -e "select login, pass from accounts where uid=YYY" | tr '\t' ';'
===== Управление базами данных и пользователями =====
==== Просмотр списка баз данных и подключение к базе данных ====
mysql> show databases;
mysql> use mysql;
==== Создание базы данных ====
shell> mysql -u root -p
mysql> CREATE DATABASE cacti;
mysql> exit;
или
shell> mysqladmin -u root -p create cacti
==== Импорт данных ====
windows> mysql -u root -p cacti < C:\xampp\htdocs\cacti\cacti.sql
или
freebsd# mysql cacti < /usr/local/share/cacti/cacti.sql
или
ubuntu# zcat /usr/share/doc/cacti/cacti.sql.gz | mysql -p cacti
==== Создание пользователя и делегирование прав ====
mysql> GRANT ALL PRIVILEGES ON cacti.* TO "cactiuser"@"localhost" IDENTIFIED BY "cactiuser";
mysql> GRANT SELECT (uuid,login,name) ON billing.accounts to user1@localhost;
mysql> FLUSH PRIVILEGES;
mysql> exit;
shell> mysql -u cactiuser -p cacti
Enter password: cactiuser
===== Отладка =====
==== Протоколирование всех запросов ====
# cat /etc/mysql/mariadb.conf.d/50-server.cnf
...
[mysqld]
...
general-log
general-log-file=/var/log/mysql/q.log
log-output=file
...
===== adminer =====
* [[https://www.adminer.org/]]
# apt install adminer
# cat /etc/apache2/sites-available/000-default.conf
...
Alias /adminer /usr/share/adminer/adminer/
...
===== phpmyadmin =====
* Выбрать apache2, все остальное по умолчанию
# apt install phpmyadmin
# ls -l /etc/apache2/conf-available/phpmyadmin.conf
# less /etc/phpmyadmin/apache.conf
http://server.corpX.un/phpmyadmin
===== Управление сбоями =====
* [[http://dev.mysql.com/doc/refman/5.1/en/show-processlist.html|SHOW PROCESSLIST Syntax]]
1. Настраиваем mysql на работу в режиме чтения
# nano /etc/my.cnf
...
innodb_force_recovery=4
...
2. Запускаем из командной строки
/usr/libexec/mysqld --skip-grant &
3. Бекапим все базы данных
mysqldump --all-databases --add-drop-table > dumpfile.sql
4. Останавливаем сервер
killall mysqld
5. Убираем настройку работы в режиме чтения
nano /etc/my.cnf
...
#innodb_force_recovery=4
...
6. Удаляем/перемещаем каталог со старыми базами данных
mv /var/lib/mysql /var/lib/mysql_
7. Создаем новый каталог для баз данных с нужными правами
mkdir /var/lib/mysql/
chown mysql:mysql /var/lib/mysql/
8. Создаем системные базы данных в новом каталоге
/usr/libexec/mysqld --initialize --user=mysql
9. Запускаем сервис
/etc/init.d/mysqld start
10. Восстанавливаем остальные базы данных из бекапа
mysql < dumpfile.sql