======MySQL 8.0.34====== MySQL — свободная реляционная система управления базами данных (СУБД), разработанная и поддерживаемая корпорацией Oracle. База данных — это специально созданное хранилище важной информации, неотъемлемым атрибутом которого является удобный доступ ко всем хранящимся данным. Для обеспечения этого доступа используются так называемые системы управления базами данных или просто СУБД, представляющие собой особые приложения на базе определенной программной архитектуры. \\ {{:software:development:ps_pycharm:mysql:mysql_2.png?600|}} {{:software:development:ps_pycharm:mysql:mysql_1.png?600|}} =====Описание программы===== Одной из самых популярных СУБД на сегодняшний день является MySQL, распространяемая свободно (с некоторыми ограничениями). Эта серверная система способна эффективно функционировать во взаимодействии с интернет-сайтами и веб-приложениями. При этом она проста в освоении, что лишь увеличивает ее популярность, особенно среди «айтишников»-любителей. \\ Примечательно, что результатом огромной популярности MySQL стало появление в интернете множества руководств по освоению системы, а также огромного количества всевозможных плагинов и расширений, упрощающих работу с этой системой. Это в свою очередь лишь придало системе еще большей популярности. \\ Несмотря на отсутствие некоторого функционала, имеющегося у других СУБД, MySQL обладает достаточно обширным разнообразием доступных инструментов для создания приложений. =====Установка сервер MySQL в Ubuntu 22.04 LTS Linux===== ====Шаг 1 — Обновление системы==== Важно, чтобы вы обновили систему, выполнив следующие команды apt: sudo apt update sudo apt list --upgradable # получить список обновлений sudo apt upgrade ====Шаг 2 — Поиск пакетов MySQL сервер==== Используйте команду apt-cache или apt, как показано ниже, для поиска серверных и клиентских пакетов MySQL в Ubuntu 22.04 LTS. Например: apt-cache search mysql-server Система вернёт список доступных вариантов, включая сервер и клиент Oracle MySQL 8.xx и MariaDB 10.x в Ubuntu 22.04 LTS: 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 Хотите узнать больше о пакете MySQL server под названием mysql-server-8.0? Выполните команду следующую команду apt, прежде чем устанавливать mysql: apt info -a mysql-server-8.0 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 Original-Maintainer: Debian MySQL Maintainers 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 Original-Maintainer: Debian MySQL Maintainers 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. 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: sudo apt install mysql-server-8.0 Пример сеанса установки: 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 ===Установка пароля для учётной записи root=== Для установки пароля учётной записи **root**, запустите: sudo mysql Затем выполните sql запрос для установки пароля **My7Pass@Word_9_8A_zE** для учётной записи **'root@localhost'**. В имени учётной записи, после @ указывается с какого адреса будет обращаться пользователь. Для локальной машины указывают **localhost** или **127.0.0.1**, для удалённой машины её IP-адрес. Для доступа из локальной или внешней сети %, но так делать не стоит без особой необходимости: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'My7Pass@Word_9_8A_zE'; exit ===Основные файлы конфигурации и порты MySQL 8.xx=== * **mysql.service** — Имя сервиса. Вы можете управлять им с помощью следующих команд systemctl: sudo systemctl start mysql.service sudo systemctl stop mysql.service sudo systemctl restart mysql.service sudo systemctl status mysql.service * **/etc/mysql/** — Основной каталог конфигурации MySQL сервера. * **/etc/mysql/my.cnf** — Файл конфигурации сервера баз данных MySQL. Отредактируйте файл .my.cnf ($HOME/.my.cnf), чтобы установить пользовательские параметры. Дополнительные настройки можно переопределить из следующих двух каталогов: /etc/mysql/conf.d/ /etc/mysql/mysql.conf.d/ * **Порт TCP/3306** — TCP/3306 сетевой порт по умолчанию для MySQL сервера и привязывается к **127.0.0.1** по соображениям безопасности. Однако вы можете его изменить, если нужен доступ к VLAN или VPN CIDR. Затем можете получить доступ к серверу MySQL, используя набор сокетов **localhost** в каталоге **/run/mysqld/**. ====Шаг 4 — Защита сервера MySQL 8==== По умолчанию пароль не установлен, и необходимо настроить другие параметры. Давайте запустим следующую команду для настройки и защиты MySQL сервера: sudo mysql_secure_installation Программа запросит пароль для пользователя **root,** политику валидации пароля и предполагаемую надёжность пароля: 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 Далее удалим анонимного пользователя, отключим удалённый вход пользователя root в систему и удалим тестовую базу данных: 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! ====Шаг 5 — Включение загрузки MySQL сервера вместе с загрузкой системы==== Убедитесь, что MySQL сервер запускается при загрузке системы с помощью следующей команды: sudo systemctl is-enabled mysql.service Если загрузка не включена, введите следующую команду для включения загрузки: sudo systemctl enable mysql.service Проверьте состояние MySQL сервера, следующей командой: sudo systemctl status mysql.service Если всё в порядке, она должна вывести что-то вроде этого: ● 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. ====Шаг 6 — Запуск/Остановка/Перезапуск MySQL сервера==== Используя параметры командной строки, мы можем управлять MySQL сервером в Ubuntu 22.04 LTS. Давайте запустим сервер, если он ещё не запущен: sudo systemctl start mysql.service Для остановки MySQL сервера выполните следующую команду: sudo systemctl stop mysql.service Если MySQL сервер нужно перезапустить выполните: sudo systemctl restart mysql.service Посмотреть журнал службы MySQL можно командной **journalctl**: sudo journalctl -u mysql.service -xe Она выведет что-то вроде: 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. Файл журнала ошибок MySQL сервера по умолчанию расположен в **/var/log/mysql/error.log**. Посмотреть последние записи можно с помощью команды **tail:** sudo tail -f /var/log/mysql/error.log 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 ====Шаг 7 — Войдите на MySQL 8 сервер для тестирования==== На данный момент мы узнали, как установить, настроить, защитить и запустить/остановить MySQL 8 сервер в Ubuntu 22.04 LTS. Пришло время зайти не сервер как root (администратор MySQL). Синтаксис команды следующий: mysql -u {user} -p mysql -u {user} -h {remote_server_ip} -p mysql -u root -p Пример сессии: 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> Выполните команду **STATUS**, которая отображает версию и другую информацию о MySQL сервере: STATUS; 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 -------------- Также версию MySQL сервера, можно посмотреть следующей командой: SHOW VARIABLES LIKE "%version%"; +--------------------------+-------------------------+ | 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) ====Шаг 8 — Создание новой базы данных MySQL и пользователя/пароля==== Создадим новую базу данных mydemodb: CREATE DATABASE mydemodb; Затем создадим пользователя **vivekappusr** для базы данных **mydemodb** с паролем **aa09dd995C72_5355a598fc7D8ab1230a**: CREATE USER 'vivekappusr'@'%' IDENTIFIED BY 'aa09dd995C72_5355a598fc7D8ab1230a'; Установим права: GRANT SELECT, INSERT, UPDATE, DELETE ON mydemodb.* TO 'vivekappusr'@'%'; И конечно предоставим все привилегии на базу данных **mydemodb**: GRANT ALL PRIVILEGES ON mydemodb.* TO 'vivekappusr'@'%'; Посмотрим пользователей MySQL и привилегии пользователя **vivekappusr** командами: SELECT USER,host FROM mysql.user; SHOW GRANTS FOR vivekappusr; Войдём под новым пользователем в MySQL: mysql -u vivekappusr -p mydemodb mysql -u vivekappusr -h localhost -p mydemodb Где, * -u vivekappusr : Имя пользователя * -h localhost : Соединение с хостом localhost * -p : Запрос пароля * mydemodb : Соединение с базой данных: mydemodb ====Шаг 9 — Конфигурация сервера MySQL 8==== Откройте файл **/etc/mysql/mysql.conf.d/mysqld.cnf** с помощью текстового редактора, например: sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf Отредактируйте раздел mysqld в соответствии с вашими потребностями. Детальную информацию по параметрам можно узнать из [[https://dev.mysql.com/doc/|документации.]] [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 Далее, я добавляю доступ по сети: # 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 Немного тонкой настройки баз данных для проекта # 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 Настройки таблицы в соответствии с потребностями проекта: # 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 Настройка ведения логов: # 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 Настройка **mysqldump** для бэкапов: [mysqldump] quick quote_names max_allowed_packet ===Настройка максимального количества отрытых файлов сервера MySQL(количество файловых дескрипторов)=== Для загруженного MySQL 8 сервера вам необходимо настроить параметры максимального количества открытых файлов с помощью **systemd**. В противном случае вы получите сообщение об ошибке «Ну удалось увеличить количество max_open_files больше, чем XXXX ». Запустите: sudo systemctl edit mysql.service Вы увидите следующий текст: ### 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 Добавьте свою конфигурацию между: ### Anything between here and the comment below will become the new contents of the file ### Lines below this comment will be discarded Например (замените **1800000** на желаемое значение. Для максимального поддерживаемого значения используйте **LimitNOFILE=infinity** вместо **LimitNOFILE=1800000**): ### 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 Создайте или отредактируйте **/etc/sysctl.d/100-custom.conf** и добавьте: fs.nr_open=1800000 Обновите изменения: sudo sysctl -p /etc/sysctl.d/100-custom.conf Затем перезагрузите и перезапустите службу mysql: sudo systemctl daemon-reload sudo systemctl restart mysql Проверьте: mysql -u root -p -e 'SHOW GLOBAL VARIABLES LIKE "open_files_limit";' Пример вывода: +------------------+---------+ | Variable_name | Value | +------------------+---------+ | open_files_limit | 1800000 | +------------------+---------+ Также можете воспользоваться следующей командой, чтобы запросить текущий лимит открытых файлов MySQL сервера в Ubuntu 22.04 LTS: cat /proc/$(cat /var/run/mysqld/mysqld.pid)/limits ## ИЛИ ## grep 'open files' /proc/$(cat /var/run/mysqld/mysqld.pid)/limits Выведет в консоль: Max open files 1800000 1800000 files =====Достоинства и недостатки===== Переходим к обзору сильных и слабых сторон MySQL от Oracle. Плюсы: * Простота в использовании. * Обширный функционал. * Безопасность. * Масштабируемость. * Скорость. Минусы: * Недостаточная надежность. * Низкая скорость разработки. \\ =====Ссылки и Примечания===== [[https://www.mysql.com/|Сайт разработчика]] \\ [[https://dev.mysql.com/downloads/installer/|Страница загрузки]] \\ [[https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-setup|Краткое руководство по использованию репозитория 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]] =====Файлы для загрузки===== Установщики MySQL 8.0.34 \\ {{ :software:development:ps_pycharm:mysql:mysql-installer-web-community-8.0.34.0.msi | Windows (x86, 64-разрядная версия), установщик MSI}} \\ {{ :software:development:ps_pycharm:mysql:mysql-8.1.0-linux-glibc2.28-x86_64.tar.xz | Linux — универсальный (glibc 2.28) (x86, 64-разрядная версия), архив TAR}} \\ {{ :software:development:ps_pycharm:mysql:mysql-apt-config_0.8.26-1_all.deb | Ubuntu / Debian (независимо от архитектуры), пакет DEB}}