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

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

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

  • software:development:ps_pycharm:mysql:mysql

    Различия

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

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

    Предыдущая версия справа и слеваПредыдущая версия
    Следующая версия
    Предыдущая версия
    software:development:ps_pycharm:mysql:mysql [2023/08/06 00:12] – [Достоинства и недостатки] vladpolskiysoftware:development:ps_pycharm:mysql:mysql [2024/02/25 20:10] (текущий) – [Ссылки и Примечания] vladpolskiy
    Строка 1: Строка 1:
     ======MySQL 8.0.34====== ======MySQL 8.0.34======
      
    -MySQL — свободная реляционная система управления базами данных, разработанная и поддерживаемая корпорацией Oracle.+MySQL — свободная реляционная система управления базами данных (СУБД), разработанная и поддерживаемая корпорацией Oracle. База данных — это специально созданное хранилище важной информации, неотъемлемым атрибутом которого является удобный доступ ко всем хранящимся данным. Для обеспечения этого доступа используются так называемые системы управления базами данных или просто СУБД, представляющие собой особые приложения на базе определенной программной архитектуры.
     \\   \\  
     {{:software:development:ps_pycharm:mysql:mysql_2.png?600|}} {{:software:development:ps_pycharm:mysql:mysql_2.png?600|}}
     {{:software:development:ps_pycharm:mysql:mysql_1.png?600|}} {{:software:development:ps_pycharm:mysql:mysql_1.png?600|}}
     =====Описание программы===== =====Описание программы=====
     +Одной из самых популярных СУБД на сегодняшний день является MySQL, распространяемая свободно (с некоторыми ограничениями). Эта серверная система способна эффективно функционировать во взаимодействии с интернет-сайтами и веб-приложениями. При этом она проста в освоении, что лишь увеличивает ее популярность, особенно среди «айтишников»-любителей.
     +\\  
     +Примечательно, что результатом огромной популярности 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>
      
     =====Достоинства и недостатки===== =====Достоинства и недостатки=====
    -Переходим к обзору сильных и слабых сторон PyCharm от JetBrains.+Переходим к обзору сильных и слабых сторон MySQL от Oracle.
      
     Плюсы: Плюсы:
      
    -  симпатичный пользовательский интерфейс; +  * Простота в использовании
    -  - красивая подсветка кода; +  * Обширный функционал. 
    -  - наличие подсказок; +  * Безопасность. 
    -  - широчайший набор возможностей.+  * Масштабируемость. 
     +  * Скорость.
     Минусы: Минусы:
      
    -  отсутствие перевода на русский язык.+  * Недостаточная надежность. 
     +  * Низкая скорость разработки.
     \\   \\  
    - 
     =====Ссылки и Примечания===== =====Ссылки и Примечания=====
     [[https://www.mysql.com/|Сайт разработчика]] [[https://www.mysql.com/|Сайт разработчика]]
    Строка 31: Строка 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.1691269977.txt.gz · Последнее изменение: 2023/08/06 00:12 — vladpolskiy