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

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

  • Показать страницу
  • История страницы
  • Ссылки сюда
  • Оставить на чай
  • Экспорт в PDF
  • Наверх

  • 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 · Последнее изменение: 2023/08/06 00:29 — vladpolskiy