Инструменты пользователя

Инструменты сайта


software:development:ps_pycharm:mysql:mysql

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
software:development:ps_pycharm:mysql:mysql [2023/08/06 00:29] vladpolskiysoftware:development:ps_pycharm:mysql:mysql [2024/02/25 20:10] (текущий) – [Ссылки и Примечания] vladpolskiy
Строка 11: Строка 11:
 \\   \\  
 Несмотря на отсутствие некоторого функционала, имеющегося у других СУБД, MySQL обладает достаточно обширным разнообразием доступных инструментов для создания приложений. Несмотря на отсутствие некоторого функционала, имеющегося у других СУБД, MySQL обладает достаточно обширным разнообразием доступных инструментов для создания приложений.
-=====Установка=====+=====Установка сервер MySQL в Ubuntu 22.04 LTS Linux===== 
 +====Шаг 1 — Обновление системы==== 
 +Важно, чтобы вы обновили систему, выполнив следующие команды apt: 
 +<code> 
 +sudo apt update 
 +sudo apt list --upgradable # получить список обновлений 
 +sudo apt upgrade 
 +</code> 
 +====Шаг 2 — Поиск пакетов MySQL сервер==== 
 +Используйте команду apt-cache или apt, как показано ниже, для поиска серверных и клиентских пакетов MySQL в Ubuntu 22.04 LTS. Например: 
 +<code> 
 +apt-cache search mysql-server 
 +</code> 
 +Система вернёт список доступных вариантов, включая сервер и клиент Oracle MySQL 8.xx и MariaDB 10.x в Ubuntu 22.04 LTS: 
 +<code> 
 +mysql-server - MySQL database server (metapackage depending on the latest version) 
 +mysql-server-8.0 - MySQL database server binaries and system database setup 
 +mysql-server-core-8.0 - MySQL database server binaries 
 +default-mysql-server - MySQL database server binaries and system database setup (metapackage) 
 +default-mysql-server-core - MySQL database server binaries (metapackage) 
 +mariadb-server-10.6 - MariaDB database server binaries 
 +mariadb-server-core-10.6 - MariaDB database core server files 
 +</code> 
 +Хотите узнать больше о пакете MySQL server под названием mysql-server-8.0? Выполните команду следующую команду apt, прежде чем устанавливать mysql: 
 +<code> 
 +apt info -a mysql-server-8.0 
 +</code> 
 +<code> 
 +Package: mysql-server-8.0 
 +Version: 8.0.29-0ubuntu0.22.04.2 
 +Priority: optional 
 +Section: database 
 +Source: mysql-8.0 
 +Origin: Ubuntu 
 +Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> 
 +Original-Maintainer: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org> 
 +Bugs: https://bugs.launchpad.net/ubuntu/+filebug 
 +Installed-Size: 1610 kB 
 +Provides: virtual-mysql-server 
 +Pre-Depends: adduser (>= 3.40), debconf, mysql-common (>= 5.5) 
 +Depends: lsb-base (>= 3.0-10), mysql-client-8.0 (>= 8.0.29-0ubuntu0.22.04.2), mysql-common (>= 5.8+1.0.4~), mysql-server-core-8.0 (= 8.0.29-0ubuntu0.22.04.2), passwd, perl:any (>= 5.6), psmisc, debconf (>= 0.5) | debconf-2.0 
 +Recommends: libhtml-template-perl, mecab-ipadic-utf8 
 +Suggests: mailx, tinyca 
 +Conflicts: mariadb-server-10.1, mariadb-server-10.3, mysql-server-5.7, virtual-mysql-server 
 +Homepage: http://dev.mysql.com/ 
 +Task: lamp-server 
 +Download-Size: 1391 kB 
 +APT-Sources: http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages 
 +Description: MySQL database server binaries and system database setup 
 + MySQL is a fast, stable and true multi-user, multi-threaded SQL database 
 + server. SQL (Structured Query Language) is the most popular database query 
 + language in the world. The main goals of MySQL are speed, robustness and 
 + ease of use. 
 + . 
 + This package contains all the infrastructure needed to setup system 
 + databases. 
 + 
 +Package: mysql-server-8.0 
 +Version: 8.0.28-0ubuntu4 
 +Priority: optional 
 +Section: database 
 +Source: mysql-8.0 
 +Origin: Ubuntu 
 +Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> 
 +Original-Maintainer: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org> 
 +Bugs: https://bugs.launchpad.net/ubuntu/+filebug 
 +Installed-Size: 1603 kB 
 +Provides: virtual-mysql-server 
 +Pre-Depends: adduser (>= 3.40), debconf, mysql-common (>= 5.5) 
 +Depends: lsb-base (>= 3.0-10), mysql-client-8.0 (>= 8.0.28-0ubuntu4), mysql-common (>= 5.8+1.0.4~), mysql-server-core-8.0 (= 8.0.28-0ubuntu4), passwd, perl:any (>= 5.6), psmisc, debconf (>= 0.5) | debconf-2.0 
 +Recommends: libhtml-template-perl, mecab-ipadic-utf8 
 +Suggests: mailx, tinyca 
 +Conflicts: mariadb-server-10.1, mariadb-server-10.3, mysql-server-5.7, virtual-mysql-server 
 +Homepage: http://dev.mysql.com/ 
 +Task: lamp-server 
 +Download-Size: 1386 kB 
 +APT-Sources: http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages 
 +Description: MySQL database server binaries and system database setup 
 + MySQL is a fast, stable and true multi-user, multi-threaded SQL database 
 + server. SQL (Structured Query Language) is the most popular database query 
 + language in the world. The main goals of MySQL are speed, robustness and 
 + ease of use. 
 + . 
 + This package contains all the infrastructure needed to setup system 
 + databases. 
 +</code> 
 +mysql-server-8.0 vs mysql-server-core-8.0 
 +  - **mysql-server-8.0** — этот пакет нужен практически во всех случаях. Он содержит исполняемые файлы сервера баз данных MySQL, клиенты и настройки системной базы данных. 
 +  - **mysql-server-core-8.0** — этот пакет включает двоичные файлы сервера, но не содержит всей инфраструктуры, необходимой для настройки системных баз данных. Так что это более полезно для тех, кто настраивает контейнеры Linux (Docker, LXD и прочие) и не нуждается во всех этих вещах, таких как клиенты mysql. 
 +====Шаг 3 — Установка пакета MySQL 8 сервер==== 
 +Давайте установим MySQL сервер версии 8.0 на Ubuntu 22.04 LTS: 
 +<code> 
 +sudo apt install mysql-server-8.0 
 +</code> 
 +Пример сеанса установки: 
 +<code> 
 +Reading package lists... Done 
 +Building dependency tree... Done 
 +Reading state information... Done 
 +The following package was automatically installed and is no longer required: 
 +  libfreetype6 
 +Use 'apt autoremove' to remove it. 
 +The following additional packages will be installed: 
 +  libcgi-fast-perl libcgi-pm-perl libclone-perl libencode-locale-perl libevent-pthreads-2.1-7 libfcgi-bin libfcgi-perl libfcgi0ldbl libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl 
 +  libmecab2 libprotobuf-lite23 libtimedate-perl liburi-perl mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-common mysql-server-core-8.0 
 +Suggested packages: 
 +  libdata-dump-perl libipc-sharedcache-perl libbusiness-isbn-perl libwww-perl mailx tinyca 
 +The following NEW packages will be installed: 
 +  libcgi-fast-perl libcgi-pm-perl libclone-perl libencode-locale-perl libevent-pthreads-2.1-7 libfcgi-bin libfcgi-perl libfcgi0ldbl libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl 
 +  libmecab2 libprotobuf-lite23 libtimedate-perl liburi-perl mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-common mysql-server-8.0 mysql-server-core-8.0 
 +0 upgraded, 27 newly installed, 0 to remove and 0 not upgraded. 
 +Need to get 28.6 MB of archives. 
 +After this operation, 240 MB of additional disk space will be used. 
 +Do you want to continue? [Y/n] y 
 +</code> 
 +===Установка пароля для учётной записи root=== 
 +Для установки пароля учётной записи **root**, запустите: 
 +<code> 
 +sudo mysql 
 +</code> 
 +Затем выполните sql запрос для установки пароля **My7Pass@Word_9_8A_zE** для учётной записи **'root@localhost'**. В имени учётной записи, после @ указывается с какого адреса будет обращаться пользователь. Для локальной машины указывают **localhost** или **127.0.0.1**, для удалённой машины её IP-адрес. Для доступа из локальной или внешней сети %, но так делать не стоит без особой необходимости: 
 +<code> 
 +ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'My7Pass@Word_9_8A_zE'; 
 +exit 
 +</code> 
 +===Основные файлы конфигурации и порты MySQL 8.xx=== 
 +  * **mysql.service** — Имя сервиса. Вы можете управлять им с помощью следующих команд systemctl: 
 +<code> 
 +sudo systemctl start mysql.service 
 +sudo systemctl stop mysql.service 
 +sudo systemctl restart mysql.service 
 +sudo systemctl status mysql.service 
 +</code> 
 +  * **/etc/mysql/** — Основной каталог конфигурации MySQL сервера. 
 + 
 +  * **/etc/mysql/my.cnf** — Файл конфигурации сервера баз данных MySQL. Отредактируйте файл .my.cnf ($HOME/.my.cnf), чтобы установить пользовательские параметры. Дополнительные настройки можно переопределить из следующих двух каталогов: 
 +<code> 
 +/etc/mysql/conf.d/ 
 +/etc/mysql/mysql.conf.d/ 
 +</code> 
 +  * **Порт TCP/3306** — TCP/3306 сетевой порт по умолчанию для MySQL сервера и привязывается к **127.0.0.1** по соображениям безопасности. Однако вы можете его изменить, если нужен доступ к VLAN или VPN CIDR. Затем можете получить доступ к серверу MySQL, используя набор сокетов **localhost** в каталоге **/run/mysqld/**. 
 +====Шаг 4 — Защита сервера MySQL 8==== 
 +По умолчанию пароль не установлен, и необходимо настроить другие параметры. Давайте запустим следующую команду для настройки и защиты MySQL сервера: 
 +<code> 
 +sudo mysql_secure_installation 
 +</code> 
 +Программа запросит пароль для пользователя **root,** политику валидации пароля и предполагаемую надёжность пароля: 
 +<code> 
 +Securing the MySQL server deployment. 
 + 
 +Enter password for user root: My7Pass@Word_9_8A_zE 
 + 
 +VALIDATE PASSWORD COMPONENT can be used to test passwords 
 +and improve security. It checks the strength of password 
 +and allows the users to set only those passwords which are 
 +secure enough. Would you like to setup VALIDATE PASSWORD component? 
 + 
 +Press y|Y for Yes, any other key for No: Y 
 + 
 +There are three levels of password validation policy: 
 + 
 +LOW    Length >= 8 
 +MEDIUM Length >= 8, numeric, mixed case, and special characters 
 +STRONG Length >= 8, numeric, mixed case, special characters and dictionary file 
 + 
 +Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2 
 +Using existing password for root. 
 + 
 +Estimated strength of the password: 100 
 +Change the password for root ? (Press y|Y for Yes, any other key for No) : Y 
 + 
 +New password: My7Pass@Word_9_8A_zE 
 + 
 +Re-enter new password: My7Pass@Word_9_8A_zE 
 + 
 +Estimated strength of the password: 100 
 +Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y 
 +</code> 
 +Далее удалим анонимного пользователя, отключим удалённый вход пользователя root в систему и удалим тестовую базу данных: 
 +<code> 
 +By default, a MySQL installation has an anonymous user, 
 +allowing anyone to log into MySQL without having to have 
 +a user account created for them. This is intended only for 
 +testing, and to make the installation go a bit smoother. 
 +You should remove them before moving into a production 
 +environment. 
 + 
 +Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y 
 +Success. 
 + 
 + 
 +Normally, root should only be allowed to connect from 
 +'localhost'. This ensures that someone cannot guess at 
 +the root password from the network. 
 + 
 +Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y 
 +Success. 
 + 
 +By default, MySQL comes with a database named 'test' that 
 +anyone can access. This is also intended only for testing, 
 +and should be removed before moving into a production 
 +environment. 
 + 
 + 
 +Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y 
 + - Dropping test database... 
 +Success. 
 + 
 + - Removing privileges on test database... 
 +Success. 
 + 
 +Reloading the privilege tables will ensure that all changes 
 +made so far will take effect immediately. 
 + 
 +Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y 
 +Success. 
 + 
 +All done! 
 +</code> 
 +====Шаг 5 — Включение загрузки MySQL сервера вместе с загрузкой системы==== 
 +Убедитесь, что MySQL сервер запускается при загрузке системы с помощью следующей команды: 
 +<code> 
 +sudo systemctl is-enabled mysql.service 
 +</code> 
 +Если загрузка не включена, введите следующую команду для включения загрузки: 
 +<code> 
 +sudo systemctl enable mysql.service 
 +</code> 
 +Проверьте состояние MySQL сервера, следующей командой: 
 +<code> 
 +sudo systemctl status mysql.service 
 +</code> 
 +Если всё в порядке, она должна вывести что-то вроде этого: 
 +<code> 
 +● mysql.service - MySQL Community Server 
 +     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) 
 +     Active: active (running) since Wed 2022-08-10 23:46:30 UTC; 2min 19s ago 
 +    Process: 1498 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) 
 +   Main PID: 1506 (mysqld) 
 +     Status: "Server is operational" 
 +      Tasks: 39 (limit: 4575) 
 +     Memory: 361.5M 
 +        CPU: 1.090s 
 +     CGroup: /system.slice/mysql.service 
 +             └─1506 /usr/sbin/mysqld 
 + 
 +Aug 10 23:46:30 nixcraft-mysql-8 systemd[1]: Starting MySQL Community Server... 
 +Aug 10 23:46:30 nixcraft-mysql-8 systemd[1]: Started MySQL Community Server. 
 +</code> 
 +====Шаг 6 — Запуск/Остановка/Перезапуск MySQL сервера==== 
 +Используя параметры командной строки, мы можем управлять MySQL сервером в Ubuntu 22.04 LTS. Давайте запустим сервер, если он ещё не запущен: 
 +<code> 
 +sudo systemctl start mysql.service 
 +</code> 
 +Для остановки MySQL сервера выполните следующую команду: 
 +<code> 
 +sudo systemctl stop mysql.service 
 +</code> 
 +Если MySQL сервер нужно перезапустить выполните: 
 +<code> 
 +sudo systemctl restart mysql.service 
 +</code> 
 +Посмотреть журнал службы MySQL можно командной **journalctl**: 
 +<code> 
 +sudo journalctl -u mysql.service -xe 
 +</code> 
 +Она выведет что-то вроде: 
 +<code> 
 +May 10 05:09:01 ubuntu-nixcraft systemd[1]: Starting MySQL Community Server... 
 +░░ Subject: A start job for unit mysql.service has begun execution 
 +░░ Defined-By: systemd 
 +░░ Support: http://www.ubuntu.com/support 
 +░░ 
 +░░ A start job for unit mysql.service has begun execution. 
 +░░ 
 +░░ The job identifier is 597. 
 +May 10 05:09:01 ubuntu-nixcraft systemd[1]: Started MySQL Community Server. 
 +░░ Subject: A start job for unit mysql.service has finished successfully 
 +░░ Defined-By: systemd 
 +░░ Support: http://www.ubuntu.com/support 
 +░░ 
 +░░ A start job for unit mysql.service has finished successfully. 
 +░░ 
 +░░ The job identifier is 597. 
 +</code> 
 +Файл журнала ошибок MySQL сервера по умолчанию расположен в **/var/log/mysql/error.log**. Посмотреть последние записи можно с помощью команды **tail:** 
 +<code> 
 +sudo tail -f /var/log/mysql/error.log 
 +</code> 
 +<code> 
 +2022-05-10T05:08:59.396952Z 7 [System] [MY-013172] [Server] Received SHUTDOWN from user boot. Shutting down mysqld (Version: 8.0.29-0ubuntu0.22.04.2). 
 +2022-05-10T05:08:59.399628Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '127.0.0.1' port: 33060, socket: /var/run/mysqld/mysqlx.sock 
 +2022-05-10T05:09:00.873507Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.29-0ubuntu0.22.04.2)  (Ubuntu). 
 +2022-05-10T05:09:01.640964Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.29-0ubuntu0.22.04.2) starting as process 1463 
 +2022-05-10T05:09:01.652378Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 
 +2022-05-10T05:09:01.771700Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 
 +2022-05-10T05:09:01.942385Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 
 +2022-05-10T05:09:01.942503Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. 
 +2022-05-10T05:09:01.974967Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.29-0ubuntu0.22.04.2'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu). 
 +2022-05-10T05:09:01.974988Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '127.0.0.1' port: 33060, socket: /var/run/mysqld/mysqlx.sock 
 +</code> 
 +====Шаг 7 — Войдите на MySQL 8 сервер для тестирования==== 
 +На данный момент мы узнали, как установить, настроить, защитить и запустить/остановить MySQL 8 сервер в Ubuntu 22.04 LTS. Пришло время зайти не сервер как root (администратор MySQL). Синтаксис команды следующий: 
 +<code> 
 +mysql -u {user} -p 
 +mysql -u {user} -h {remote_server_ip} -p 
 +mysql -u root -p 
 +</code> 
 +Пример сессии: 
 +<code> 
 +Enter password: 
 +Welcome to the MySQL monitor.  Commands end with ; or \g. 
 +Your MySQL connection id is 14 
 +Server version: 8.0.30-0ubuntu0.22.04.1 (Ubuntu) 
 + 
 +Copyright (c) 2000, 2022, Oracle and/or its affiliates. 
 + 
 +Oracle is a registered trademark of Oracle Corporation and/or its 
 +affiliates. Other names may be trademarks of their respective 
 +owners. 
 + 
 +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
 + 
 +mysql> 
 +</code> 
 +Выполните команду **STATUS**, которая отображает версию и другую информацию о MySQL сервере: 
 +<code> 
 +STATUS; 
 +</code> 
 +<code> 
 +mysql  Ver 8.0.30-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu)) 
 + 
 +Connection id:        14 
 +Current database: 
 +Current user:         root@localhost 
 +SSL:                  Not in use 
 +Current pager:        stdout 
 +Using outfile:        '' 
 +Using delimiter:      ; 
 +Server version:       8.0.30-0ubuntu0.22.04.1 (Ubuntu) 
 +Protocol version:     10 
 +Connection:           Localhost via UNIX socket 
 +Server characterset:  utf8mb4 
 +Db     characterset:  utf8mb4 
 +Client characterset:  utf8mb4 
 +Conn.  characterset:  utf8mb4 
 +UNIX socket:          /var/run/mysqld/mysqld.sock 
 +Binary data as:       Hexadecimal 
 +Uptime:               5 min 40 sec 
 + 
 +Threads: 2  Questions: 20  Slow queries: 0  Opens: 142  Flush tables: 3  Open tables: 61  Queries per second avg: 0.058 
 +-------------- 
 +</code> 
 +Также версию MySQL сервера, можно посмотреть следующей командой: 
 +<code> 
 +SHOW VARIABLES LIKE "%version%"; 
 +</code> 
 +<code> 
 ++--------------------------+-------------------------+ 
 +| Variable_name            | Value                   | 
 ++--------------------------+-------------------------+ 
 +| admin_tls_version        | TLSv1.2,TLSv1.3         | 
 +| immediate_server_version | 999999                  | 
 +| innodb_version           | 8.0.30                  | 
 +| original_server_version  | 999999                  | 
 +| protocol_version         | 10                      | 
 +| replica_type_conversions |                         | 
 +| slave_type_conversions                           | 
 +| tls_version              | TLSv1.2,TLSv1.3         | 
 +| version                  | 8.0.30-0ubuntu0.22.04.1 | 
 +| version_comment          | (Ubuntu)                | 
 +| version_compile_machine  | x86_64                  | 
 +| version_compile_os       | Linux                   | 
 +| version_compile_zlib     | 1.2.12                  | 
 ++--------------------------+-------------------------+ 
 +13 rows in set (0.00 sec) 
 +</code> 
 +====Шаг 8 — Создание новой базы данных MySQL и пользователя/пароля==== 
 +Создадим новую базу данных mydemodb: 
 +<code> 
 +CREATE DATABASE mydemodb; 
 +</code> 
 +Затем создадим пользователя **vivekappusr** для базы данных **mydemodb** с паролем **aa09dd995C72_5355a598fc7D8ab1230a**: 
 +<code> 
 +CREATE USER 'vivekappusr'@'%' IDENTIFIED BY 'aa09dd995C72_5355a598fc7D8ab1230a'; 
 +</code> 
 +Установим права: 
 +<code> 
 +GRANT SELECT, INSERT, UPDATE, DELETE ON mydemodb.* TO 'vivekappusr'@'%'; 
 +</code> 
 +И конечно предоставим все привилегии на базу данных **mydemodb**: 
 +<code> 
 +GRANT ALL PRIVILEGES ON mydemodb.* TO 'vivekappusr'@'%'; 
 +</code> 
 +Посмотрим пользователей MySQL и привилегии пользователя **vivekappusr** командами: 
 +<code> 
 +SELECT USER,host FROM mysql.user; 
 +SHOW GRANTS FOR vivekappusr; 
 +</code> 
 +Войдём под новым пользователем в MySQL: 
 +<code> 
 +mysql -u vivekappusr -p mydemodb 
 +mysql -u vivekappusr -h localhost -p mydemodb 
 +</code> 
 +Где, 
 + 
 +  * -u vivekappusr : Имя пользователя 
 +  * -h localhost : Соединение с хостом localhost 
 +  * -p : Запрос пароля 
 +  * mydemodb : Соединение с базой данных: mydemodb 
 +====Шаг 9 — Конфигурация сервера MySQL 8==== 
 +Откройте файл **/etc/mysql/mysql.conf.d/mysqld.cnf** с помощью текстового редактора, например: 
 +<code> 
 +sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 
 +</code> 
 +Отредактируйте раздел mysqld в соответствии с вашими потребностями. Детальную информацию по параметрам можно узнать из [[https://dev.mysql.com/doc/|документации.]] 
 +<code> 
 +[mysqld] 
 +pid-file  = /var/run/mysqld/mysqld.pid 
 +socket    = /var/run/mysqld/mysqld.sock 
 +datadir   = /var/lib/mysql 
 +log-error = /var/log/mysql/error.log 
 +</code> 
 +Далее, я добавляю доступ по сети: 
 +<code> 
 +# server LAN/VLAN IP and port 
 +bind_address = 10.147.164.6 
 +port = 3306 
 +skip_external_locking 
 +skip_name_resolve 
 +max_allowed_packet              = 256M 
 +max_connect_errors              = 1000000 
 +</code> 
 +Немного тонкой настройки баз данных для проекта 
 +<code> 
 +# InnoDB 
 +default_storage_engine          = InnoDB 
 +innodb_buffer_pool_instances    = 1 
 +innodb_buffer_pool_size         = 512M 
 +innodb_file_per_table           = 1 
 +innodb_flush_log_at_trx_commit  = 0 
 +innodb_flush_method             = O_DIRECT 
 +innodb_log_buffer_size          = 16M 
 +innodb_log_file_size            = 512M 
 +innodb_stats_on_metadata        = 0 
 +innodb_read_io_threads          = 64 
 +innodb_write_io_threads         = 64 
 + 
 +# MyISAM Settings (set if you are using MyISAM) 
 +key_buffer_size                 = 32M 
 + 
 +low_priority_updates            = 1 
 +concurrent_insert               = 2 
 + 
 +# Connection Settings 
 +max_connections                 = 100 
 + 
 +back_log                        = 512 
 +thread_cache_size               = 100 
 +thread_stack                    = 192K 
 + 
 +interactive_timeout             = 180 
 +wait_timeout                    = 180 
 + 
 +# Buffer Settings 
 +join_buffer_size                = 4M 
 +read_buffer_size                = 3M 
 +read_rnd_buffer_size            = 4M 
 +sort_buffer_size                = 4M 
 +</code> 
 +Настройки таблицы в соответствии с потребностями проекта: 
 +<code> 
 +# Table Settings (see below for open file limits) 
 +table_definition_cache          = 40000 
 +table_open_cache                = 40000 
 +open_files_limit                = 60000 
 + 
 +max_heap_table_size             = 128M 
 +tmp_table_size                  = 128M 
 + 
 +# Search Settings 
 +ft_min_word_len                 = 3 
 +</code> 
 +Настройка ведения логов: 
 +<code> 
 +# Logging 
 +log_error                       = /var/lib/mysql/mysql_error.log 
 +log_queries_not_using_indexes   = 1 
 +long_query_time                 = 5 
 +slow_query_log                  = 0     # Disabled for production 
 +slow_query_log_file             = /var/lib/mysql/mysql_slow.log 
 +</code> 
 +Настройка **mysqldump** для бэкапов: 
 +<code> 
 +[mysqldump] 
 +quick 
 +quote_names 
 +max_allowed_packet 
 +</code> 
 +===Настройка максимального количества отрытых файлов сервера MySQL(количество файловых дескрипторов)=== 
 +Для загруженного MySQL 8 сервера вам необходимо настроить параметры максимального количества открытых файлов с помощью **systemd**. В противном случае вы получите сообщение об ошибке «Ну удалось увеличить количество max_open_files больше, чем XXXX ». Запустите: 
 +<code> 
 +sudo systemctl edit mysql.service 
 +</code> 
 +Вы увидите следующий текст: 
 +<code> 
 +### Lines below this comment will be discarded 
 +### /lib/systemd/system/mysql.service 
 +# # MySQL systemd service file 
 +
 +# [Unit] 
 +# Description=MySQL Community Server 
 +# After=network.target 
 +
 +# [Install] 
 +# WantedBy=multi-user.target 
 +
 +# [Service] 
 +# Type=notify 
 +# User=mysql 
 +# Group=mysql 
 +# PIDFile=/run/mysqld/mysqld.pid 
 +# PermissionsStartOnly=true 
 +# ExecStartPre=/usr/share/mysql/mysql-systemd-start pre 
 +# ExecStart=/usr/sbin/mysqld 
 +# TimeoutSec=infinity 
 +# Restart=on-failure 
 +# RuntimeDirectory=mysqld 
 +# RuntimeDirectoryMode=755 
 +# LimitNOFILE=10000 
 +
 +# # Set enviroment variable MYSQLD_PARENT_PID. This is required for restart. 
 +# Environment=MYSQLD_PARENT_PID=1 
 +</code> 
 +Добавьте свою конфигурацию между: 
 +<code> 
 +### Anything between here and the comment below will become the new contents of the file 
 + 
 + 
 + 
 +### Lines below this comment will be discarded 
 +</code> 
 +Например (замените **1800000** на желаемое значение. Для максимального поддерживаемого значения используйте **LimitNOFILE=infinity** вместо **LimitNOFILE=1800000**): 
 +<code> 
 +### Editing /etc/systemd/system/mysql.service.d/override.conf 
 +### Anything between here and the comment below will become the new contents of the file 
 +[Service] 
 +LimitNOFILE=1800000 
 + 
 + 
 + 
 +### Lines below this comment will be discarded 
 + 
 +### /lib/systemd/system/mysql.service 
 +# # MySQL systemd service file 
 +
 +# [Unit] 
 +# Description=MySQL Community Server 
 +# After=network.target 
 +
 +# [Install] 
 +# WantedBy=multi-user.target 
 +
 +# [Service] 
 +# Type=notify 
 +# User=mysql 
 +# Group=mysql 
 +# PIDFile=/run/mysqld/mysqld.pid 
 +# PermissionsStartOnly=true 
 +# ExecStartPre=/usr/share/mysql/mysql-systemd-start pre 
 +# ExecStart=/usr/sbin/mysqld 
 +# TimeoutSec=infinity 
 +# Restart=on-failure 
 +# RuntimeDirectory=mysqld 
 +# RuntimeDirectoryMode=755 
 +# LimitNOFILE=10000 
 +
 +# # Set enviroment variable MYSQLD_PARENT_PID. This is required for restart. 
 +# Environment=MYSQLD_PARENT_PID=1 
 +</code> 
 +Создайте или отредактируйте **/etc/sysctl.d/100-custom.conf** и добавьте: 
 +<code> 
 +fs.nr_open=1800000 
 +</code> 
 +Обновите изменения: 
 +<code> 
 +sudo sysctl -p /etc/sysctl.d/100-custom.conf 
 +</code> 
 +Затем перезагрузите и перезапустите службу mysql: 
 +<code> 
 +sudo systemctl daemon-reload 
 +sudo systemctl restart mysql 
 +</code> 
 +Проверьте: 
 +<code> 
 +mysql -u root -p -e 'SHOW GLOBAL VARIABLES LIKE "open_files_limit";' 
 +</code> 
 +Пример вывода: 
 +<code> 
 ++------------------+---------+ 
 +| Variable_name    | Value   | 
 ++------------------+---------+ 
 +| open_files_limit | 1800000 | 
 ++------------------+---------+ 
 +</code> 
 +Также можете воспользоваться следующей командой, чтобы запросить текущий лимит открытых файлов MySQL сервера в Ubuntu 22.04 LTS: 
 +<code> 
 +cat /proc/$(cat /var/run/mysqld/mysqld.pid)/limits 
 +## ИЛИ ## 
 +grep 'open files' /proc/$(cat /var/run/mysqld/mysqld.pid)/limits 
 +</code> 
 +Выведет в консоль: 
 +<code> 
 +Max open files            1800000              1800000              files 
 +</code>
  
 =====Достоинства и недостатки===== =====Достоинства и недостатки=====
Строка 36: Строка 650:
 \\   \\  
 [[https://dev.mysql.com/downloads/repo/apt/|Репозиторий MySQL APT]] [[https://dev.mysql.com/downloads/repo/apt/|Репозиторий MySQL APT]]
 +\\  
 +[[https://www.cyberciti.biz/faq/installing-mysql-server-on-ubuntu-22-04-lts-linux/|Источник: «How to install MySQL server on Ubuntu 22.04 LTS Linux»]]
 +\\  
 +[[https://dev.mysql.com/doc/|MySQL Documentation]]
 +\\  
 +[[software:development:web:docs:learn:mariadb:вatabase_creation|База данных PHP MySQL]]
  
  
software/development/ps_pycharm/mysql/mysql.1691270995.txt.gz · Последнее изменение: vladpolskiy