====== Сервис MySQL ====== ===== Установка ===== ==== Debian/Ubuntu ==== * на все вопросы о пароле пользователя root нажимаем "Enter" * ставится 3-4 минуты debian10_11# apt install default-mysql-server server# 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