MySQL is a fast, multi-threaded, multi-user, and robust SQL database server. It is intended for mission-critical, heavy-load production systems and mass-deployed software.
Installation
To install MySQL, run the following command from a terminal prompt:
sudo apt install mysql-server
Once the installation is complete, the MySQL server should be started automatically. You can quickly check its current status via systemd:
sudo service mysql status
Which should provide an output like the following:
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-10-08 14:37:38 PDT; 2 weeks 5 days ago
Main PID: 2028 (mysqld)
Tasks: 28 (limit: 4915)
CGroup: /system.slice/mysql.service
└─2028 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
Oct 08 14:37:36 db.example.org systemd[1]: Starting MySQL Community Server...
Oct 08 14:37:38 db.example.org systemd[1]: Started MySQL Community Server.
The network status of the MySQL service can also be checked by running the ss
command at the terminal prompt:
sudo ss -tap | grep mysql
When you run this command, you should see something similar to the following:
LISTEN 0 151 127.0.0.1:mysql 0.0.0.0:* users:(("mysqld",pid=149190,fd=29))
LISTEN 0 70 *:33060 *:* users:(("mysqld",pid=149190,fd=32))
If the server is not running correctly, you can type the following command to start it:
sudo service mysql restart
A good starting point for troubleshooting problems is the systemd journal, which can be accessed from the terminal prompt with this command:
sudo journalctl -u mysql
Configuration
You can edit the files in /etc/mysql/
to configure the basic settings – log file, port number, etc. For example, to configure MySQL to listen for connections from network hosts, in the file /etc/mysql/mysql.conf.d/mysqld.cnf
, change the bind-address directive to the server’s IP address:
bind-address = 192.168.0.5
Note:
Replace192.168.0.5
with the appropriate address, which can be determined via theip address show
command.
After making a configuration change, the MySQL daemon will need to be restarted with the following command:
sudo systemctl restart mysql.service
Database engines
Whilst the default configuration of MySQL provided by the Ubuntu packages is perfectly functional and performs well there are things you may wish to consider before you proceed.
MySQL is designed to allow data to be stored in different ways. These methods are referred to as either database or storage engines. There are two main storage engines that you’ll be interested in: InnoDB and MyISAM. Storage engines are transparent to the end user. MySQL will handle things differently under the surface, but regardless of which storage engine is in use, you will interact with the database in the same way.
Each engine has its own advantages and disadvantages.
While it is possible (and may be advantageous) to mix and match database engines on a table level, doing so reduces the effectiveness of the performance tuning you can do as you’ll be splitting the resources between two engines instead of dedicating them to one.
-
MyISAM is the older of the two. It can be faster than InnoDB under certain circumstances and favours a read-only workload. Some web applications have been tuned around MyISAM (though that’s not to imply that they will be slower under InnoDB). MyISAM also supports the FULLTEXT data type, which allows very fast searches of large quantities of text data. However MyISAM is only capable of locking an entire table for writing. This means only one process can update a table at a time. As any application that uses the table scales this may prove to be a hindrance. It also lacks journaling, which makes it harder for data to be recovered after a crash. The following link provides some points for consideration about using MyISAM on a production database.
-
InnoDB is a more modern database engine, designed to be ACID compliant which guarantees database transactions are processed reliably. Write locking can occur on a row level basis within a table. That means multiple updates can occur on a single table simultaneously. Data caching is also handled in memory within the database engine, allowing caching on a more efficient row level basis rather than file block. To meet ACID compliance all transactions are journaled independently of the main tables. This allows for much more reliable data recovery as data consistency can be checked.
As of MySQL 5.5 InnoDB is the default engine, and is highly recommended over MyISAM unless you have specific needs for features unique to that engine.
Advanced configuration
Creating a tuned configuration
There are a number of parameters that can be adjusted within MySQL’s configuration files. This will allow you to improve the server’s performance over time.
Many parameters can be adjusted with the existing database, however some may affect the data layout and thus need more care to apply.
First, if you have existing data, you will first need to carry out a mysqldump
and reload:
mysqldump --all-databases --routines -u root -p > ~/fulldump.sql
This will then prompt you for the root password before creating a copy of the data. It is advisable to make sure there are no other users or processes using the database whilst this takes place. Depending on how much data you’ve got in your database, this may take a while. You won’t see anything on the screen during this process.
Once the dump has been completed, shut down MySQL:
sudo service mysql stop
It’s also a good idea to backup the original configuration:
sudo rsync -avz /etc/mysql /root/mysql-backup
Next, make any desired configuration changes. Then, delete and re-initialise the database space and make sure ownership is correct before restarting MySQL:
sudo rm -rf /var/lib/mysql/*
sudo mysqld --initialize
sudo chown -R mysql: /var/lib/mysql
sudo service mysql start
The final step is re-importation of your data by piping your SQL commands to the database.
cat ~/fulldump.sql | mysql
For large data imports, the ‘Pipe Viewer’ utility can be useful to track import progress. Ignore any ETA times produced by pv
; they’re based on the average time taken to handle each row of the file, but the speed of inserting can vary wildly from row to row with mysqldumps
:
sudo apt install pv
pv ~/fulldump.sql | mysql
Once this step is complete, you are good to go!
Note:
This is not necessary for allmy.cnf
changes. Most of the variables you can change to improve performance are adjustable even whilst the server is running. As with anything, make sure to have a good backup copy of your config files and data before making changes.
MySQL Tuner
MySQL Tuner is a Perl script that connects to a running MySQL instance and offers configuration suggestions for optimising the database for your workload. The longer the server has been running, the better the advice mysqltuner
can provide. In a production environment, consider waiting for at least 24 hours before running the tool. You can install mysqltuner
from the Ubuntu repositories:
sudo apt install mysqltuner
Then once it has been installed, simply run: mysqltuner
– and wait for its final report.
The top section provides general information about the database server, and the bottom section provides tuning suggestions to alter in your my.cnf
. Most of these can be altered live on the server without restarting; look through the official MySQL documentation (link in Resources section at the bottom of this page) for the relevant variables to change in production. The following example is part of a report from a production database showing potential benefits from increasing the query cache:
-------- Recommendations -----------------------------------------------------
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
Increase table_cache gradually to avoid file descriptor limits
Variables to adjust:
key_buffer_size (> 1.4G)
query_cache_size (> 32M)
table_cache (> 64)
innodb_buffer_pool_size (>= 22G)
It goes without saying that performance optimisation strategies vary from application to application. So for example, what works best for WordPress might not be the best for Drupal or Joomla. Performance can be dependent on the types of queries, use of indexes, how efficient the database design is and so on.
You may find it useful to spend some time searching for database tuning tips based on what applications you’re using. Once you’ve reached the point of diminishing returns from database configuration adjustments, look to the application itself for improvements, or invest in more powerful hardware and/or scaling up the database environment.
Resources
-
Full documentation is available in both online and offline formats from the MySQL Developers portal
-
For general SQL information see the O’Reilly books Getting Started with SQL: A Hands-On Approach for Beginners by Thomas Nield as an entry point and SQL in a Nutshell as a quick reference.
-
The Apache MySQL PHP Ubuntu Wiki page also has useful information.
MySQL — это реляционная СУБД, которая использует язык запросов SQL. В инструкции мы рассмотрим, как запустить MySQL на Ubuntu 20.04. Для этого нам потребуется облачный сервер.
Создание облачного сервера
Создать облачный сервер с операционной системой Ubuntu 20.04 можно в Облачной платформе Selectel.
Откройте панель управления, перейдите в раздел Серверы и нажмите Создать сервер.
В качестве источника выберите в списке Ubuntu 20.04.
Сконфигурировать сервер можно любым образом, подробнее о настройках в Базе знаний.
Чтобы в дальнейшем можно было подключиться к серверу извне, создайте плавающий IP-адрес. Для этого в выпадающем списке Сеть выберите Плавающий IP-адрес.
Подготовка системы
Перед установкой MySQL сервер нужно подготовить: подключиться к нему по SSH и настроить брандмауэр с помощью UFW.
Подключение по SSH
Для подключения по SSH в терминале локальной машины введите:
ssh root@server_ip
IP-адрес сервера находится на вкладке Порты на странице сервера.
Пароль для root-пользователя, который требуется при аутентификации, можно найти на вкладке Консоль.
Настройка брандмауэра в Ubuntu
После подключения настройте брандмауэр так, чтобы он разрешал подключения к серверу по SSH.
Обновите индекс пакетов:
sudo apt update
Установите утилиту UFW для настройки брандмауэра:
sudo apt install ufw
Проверьте список профилей UFW:
sudo ufw app list
В списке должен быть указан OpenSSH:
Available applications:
OpenSSH
Разрешите подключения по SSH:
sudo ufw allow OpenSSH
Активируйте брандмауэр:
sudo ufw enable
Убедитесь, что брандмауэр активен, и включены профили OpenSSH:
sudo ufw status
Вывод будет выглядеть так:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Теперь можно переходить к установке и настройке MySQL на облачном сервере.
Установка MySQL
Установить MySQL на Ubuntu 20.04 можно через пакет:
sudo apt install mysql-server
На момент публикации инструкции по умолчанию ставится версия 8.0.23.
Вы можете проверить установленную версию:
mysql --version
Начальная настройка MySQL
Запустите скрипт для повышения безопасности MySQL:
sudo mysql_secure_installation
Система запросит разрешение на установку плагина валидации паролей. Этот плагин проверяет безопасность пароля и позволяет пользователю ставить только достаточно защищенные пароли.
Если вы хотите установить этот плагин, введите в консоли y или Y.
Есть три уровня защищенности пароля: LOW (0), MEDIUM (1) и STRONG (2). Чтобы задать уровень пароля, нажмите соответствующую цифру, например, 2 для сильного пароля. Даже если вы на предыдущем шаге не установили плагин, система запросит вас поставить пароль для пользователя root — введите его два раза.
Если плагин установлен, будет показан уровень надёжности пароля Estimated strength of the password.
Далее система задаст ряд вопросов: хотите ли вы использовать этот пароль для продолжения работы, удалить ли всех анонимных пользователей, запретить удаленно подключаться как root, удалить тестовую БД и доступ к ней, перезагрузить таблицы с привилегиями. Вы можете ответить на все эти вопросы положительно: y, Y или Enter.
Если в выводе появится All done!, то пароль для root успешно настроен.
По умолчанию вход в MySQL в Ubuntu не будет происходить по паролю. Чтобы настроить подключение через пароль, следуйте инструкции ниже.
Настройка аутентификации и управление пользователями
Аутентификация по паролю
Для root-пользователя аутентификация в MySQL происходит с использованием плагина auth_socket. Чтобы при подключении запрашивался пароль, нужно изменить плагин.
Войдите в оболочку MySQL:
sudo mysql
Посмотрите, какой плагин используется:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Для пользователя root используется auth_socket:
Назначьте пользователю root новый плагин caching_sha2_password. Также установите пароль того уровня надежности, который вы задали ранее (на шаге Базовая настройка MySQL) — это может быть, например, тот же самый пароль. Введите его вместо password:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
Некоторые приложения для работы с MySQL (например, phpMyAdmin) не будут надежно работать с плагином caching_sha2_password. В таком случае лучше установить другой плагин — mysql_native_password.
Активируйте изменения:
mysql> FLUSH PRIVILEGES;
Проверьте, что для пользователя root плагин изменился на caching_sha2_password:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Закройте командную строку MySQL:
mysql> exit
Дополнительный пользователь (опционально)
Вы можете создать дополнительного пользователя для работы с MySQL.
Если вы установили аутентификацию по паролю, изменилась команда для подключения к консоли MySQL:
mysql -u root -p
Если у вас не установлена аутентификация по паролю, то для входа в MySQL используйте:
sudo mysql
Создайте нового пользователя и поставьте пароль:
mysql> CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';
Если вы хотите дать пользователю полный доступ к определенной базе данных, используйте:
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'new_user'@'localhost';
Закройте консоль MySQL:
mysql> exit
Тестирование MySQL
Посмотрите статус MySQL:
systemctl status mysql
В выводе должен быть индикатор зеленого цвета и статус active:
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-03-22 09:57:07 UTC; 2h 39min ago
Main PID: 2630 (mysqld)
Status: "Server is operational"
Tasks: 38 (limit: 1107)
Memory: 331.4M
CGroup: /system.slice/mysql.service
└─2630 /usr/sbin/mysqld
По какой-то причине сервис может быть не активен. В таком случае запуск MySQL в Ubuntu происходит через команду:
sudo systemctl start mysql
Если вы хотите дополнительно проверить работу MySQL, используйте инструмент mysqladmin — он нужен для администрирования MySQL-сервера. Подключитесь к MySQL и запросите пароль от root:
sudo mysqladmin version -u root -p
Если вывод выглядит подобным образом, то MySQL успешно установлена и готова к использованию:
mysqladmin Ver 8.0.23-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2021, 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.
Server version 8.0.23-0ubuntu0.20.04.1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 2 hours 47 min 34 sec
Threads: 2 Questions: 28 Slow queries: 0 Opens: 141 Flush tables: 3 Open tables: 60 Queries per second avg: 0.002
Удаление MySQL
Если по какой-то причине вам нужно удалить MySQL из Ubuntu 20.04, сначала остановите сервисы:
sudo systemctl stop mysql
Удалите пакеты MySQL:
sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*
Удалите всех пользователей:
sudo deluser --remove-home mysql
sudo delgroup mysql
Удалите файлы базы данных, конфигурационные файлы и логи:
sudo rm -rf /etc/mysql /var/lib/mysql /var/log/mysql
Удалите оставшиеся зависимости:
sudo apt-get autoremove
sudo apt-get autoclean
Обновлено: 20.07.2020
Опубликовано: 12.07.2018
Тематические термины: MySQL, MariaDB, Linux.
В статье пойдет речь о просмотре и смене пути расположения файлов баз данных MySQL. Приведенные примеры выполнены на CentOS 7 — также они будут работать на Ubuntu и многих других дистрибутивах Linux, FreeBSD и Windows.
Просмотр путей
Командная строка
Оболочка MySQL
phpMyAdmin
Смена расположения баз
Смотрите также
Посмотреть текущий путь
Увидеть, где хранятся базы можно несколькими способами.
Способ 1. Командная строка Linux.
В командной строке вводим:
systemctl status mysql || systemctl status mariadb
* для Windows используем оснастку Службы. Для FreeBSD используем команду service mysql-server stop.
Пример ответа:
mariadb.service — MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since Ср 2018-07-11 15:38:16 MSK; 23h ago
Process: 1067 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
Process: 992 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
Main PID: 1066 (mysqld_safe)
CGroup: /system.slice/mariadb.service
??1066 /bin/sh /usr/bin/mysqld_safe —basedir=/usr
??1248 /usr/libexec/mysqld —basedir=/usr —datadir=/var/lib/mysql —plugin-dir=/usr/lib64/mysql/plugin —log-error=/var/log/mariadb/mariadb.log —pid-file=/var/run/mariadb/mariadb.pid —socket…
* в выделенном фрагменте /var/lib/mysql — путь до файлов базы данных.
Способ 2. Командная оболочка MySQL.
Данный способ является более универсальным — он подойдет для любого дистрибутива Linux, FreeBSD, Windows. Также, метод универсален с точки зрения метода установки MySQL — чистая установка или в составе готовой сборки (Open Server, Xampp, Denwer …).
Заходим под пользователем root в командную оболочку СУБД:
mysql -uroot -p
Вводим:
> SHOW VARIABLES WHERE Variable_Name LIKE «datadir»;
или
> select @@datadir;
Пример ответа:
+—————+——————+
| Variable_name | Value |
+—————+——————+
| datadir | /var/lib/mysql/ |
+—————+——————+
Способ 3. Через phpMyAdmin.
Если у нас нет доступа к серверу по SSH или удаленному рабочему столу, запрос можно сделать в phpMyAdmin:
Смена пути
Останавливаем сервер баз данных:
systemctl stop mysql || systemctl stop mariadb
Создаем новый каталог, например:
mkdir /home/mysql
Переносим содержимое старого каталога в новый:
mv /var/lib/mysql/* /home/mysql/
Задаем права и владельца для нового каталога:
chown mysql:mysql /home/mysql
chmod 755 /home/mysql
Открываем конфигурационный файл my.cnf:
vi /etc/my.cnf.d/server.cnf
* в разных версиях mysql и mariadb могут использоваться разные пути:
- /etc/my.cnf.
- /etc/my.cnf.d/server.cnf.
- /etc/my.cnf.d/mariadb-server.cnf.
- В Windows это my.ini.
и задаем новый путь:
[mysqld]
datadir = /home/mysql
Запускаем сервер:
systemctl start mysql || systemctl start mariadb
Смотрите также
Установка MariaDB на CentOS 7
Как восстановить базу MySQL
Создание и удаление баз в MySQL/MariaDB
Экспорт баз данных MariaDB/MySQL в phpMyAdmin
Была ли полезна вам эта инструкция?
Да Нет
Каждой компании требуется хорошая БД с легким реляционным управлением. Именно поэтому большая часть сайтов в интернете используют MySQL.
Для того чтобы вы смогли использовать данную СУБД её нужно установить на сервер и настроить. Сейчас мы с вами разберемся как установить MySQL на ваш линукс сервер, как его настроить, а также как получить удаленный доступ к вашему MySQL серверу.
Установка MySQL на Linux
Пример будет показан на Ubuntu 20.04.1 сервер я создал тут
Для того чтобы установить данную СУБД без проблем изначально необходимо обновить систему. Чтобы обновить систему используйте следующую команду:
Sudo apt-get update
После данной команды дождитесь окончания скачивания обновлений.
Как показано в примере выше обновление было скачено и установлено.
Далее будем скачивать сам пакет данных MySQL для этого используется следующая команда:
Sudo apt-get install mysql-server
Во время установки вам может быть предложено скачать дополнительные файлы, рекомендую это сделать, введя Y и нажав enter.
Настройка
После установки MySQL сервера стоит установить пароль для администратора. Сделать этом можно с помощью ряда команд.
Sudo mysql_secure_installation
После ввода команды вам будет предложено установить плагин для улучшения безопасности сервера.
Validate Password – Предлагает вам выбрать использование паролей различного уровня. Всего есть три уровня
- Первый 0 – слабый пароль где кол-во символов должно быть больше либо равно 8.
- Второй 1 – средний пароль где должны быть от 8 символов, включая цифры, буквы, специальные символы.
- Третий 2 – сильный пароль от 8 символов, должен включать цифры, буквы, специальные символы и буквы верхнего и нижнего регистра.
Вписываем 2 и жмем enter, а потом вводим желаемый пароль.
Я вписал пароль с буквами верхнего и нижнего регистра и т.д. Как вы видите указано что безопасность пароля = 100 далее необходимо подтвердить, что данный пароль вам подходит, введя Y и нажав enter.
После этого вам будет предложено удалить анонимных пользователей, которые создаются автоматически. Для большей безопасности их стоит удалить, введя Y и нажав enter.
Далее вам будет предложено отключить возможность удаленного подключения к root пользователю для большей безопасности введите Y. (Однако если собираетесь входить в аккаунт удаленно, то введите N).
После этого можно будет удалить тестовые базы данных, а также обновить правила просто введя дважды Y.
Проверка работоспособности
После всех данных команд нужно проверить работоспособность MySQL сервера. Для этого введите следующую команду.
Systemctl status mysql.service
Как видно на примере выше проверка прошла успешно и сервер запущен.
если вдруг сервер не активен запустите его с помощью команды –
sudo systemctl start mysql
Вход в root mysql
Для того чтобы вы смогли добавить пользователя вам нужно будет вписать следующие команды:
Sudo mysql
Данная команда вводит вас в саму базу сервера
Создание базы данных
Чтобы создать базу данных введите следующую команду:
Create database "namebase"
Как можно заметить база данных была создана
Добавление пользователей
После того как вы вошли в базу сервера от лица Root пользователя вам нужно будет ввести следующую команду для создания пользователя:
CREATE USER ‘USERNAME’@’host’ IDENTIFIED BY ‘password’ ;
- Create user – Данная команда отвечает за создание пользователя.
- ‘username’ – Здесь в кавычках вы указываете имя пользователя
- ‘Host’ – Здесь в кавычках вы указываете способ подключения, если указать localhost, то подключиться удаленно нельзя, в моем примере я создал удаленное подключение
- Identified by – Способ аутентификации
- ‘password’ – здесь в кавычках нужно указать пароль, который подходит под вашу систему, которую мы указывали ранее. (Цифра 2, помните?)
очень важно не забудьте в конце поставить ;
Теперь, когда пользователь создан ему необходимо дать какие-то права, для этого введите команду:
GRANT ALL PRIVILEGES ON database name. * TO ‘username’@’host’
Database_name. – нужно ввести имя базы данных
не забудьте поставить в конце имени точку
‘Username’ – нужно ввести имя пользователя
‘host’ – указываем можно ли будет подключиться удаленно
Как видите я дал все полномочия для работы с этой базой данных пользователю, которого только что создал.
Давайте войдем с помощью созданного пользователя для этого введите следующие команды
Mysql –uUsername –p (нажмите enter)
После этого у вас попросят ввести пароль данного пользователя.
После ввода пароля вы будете авторизированы и сможете взаимодействовать с сервером. Давайте проверим можем ли мы работать с нашей базой данных.
Введите пару команд для проверки:
- Use mybase – позволяет использовать созданную базу данных
- Show tables; — позволяет увидеть информацию
важно не забывать ;
Заключение
В данной статье мы с вами ознакомились, как можно установить сервер MySQL на линукс и как его настроить для работы. Также мы узнали каким образом можно его обезопасить, добавить пользователя и привилегии для него, а также проверить работоспособность. Теперь данный MySQL сервер готов к работе, к нему можно подключиться и взаимодействовать с ним и его базами данных. Для того чтобы понять каким образом вы можете далее работать с ним лучше всего все проделать самостоятельно чтобы не возникло никаких вопросов.
Каждый MySQL сервер должен быть в безопасности и не бояться, к примеру, ддос атак. Наш сервис mivocloud предоставляет отличную защиту от ддос атак, а также менеджмент ваших серверов (за отдельную плату) если вам нужен стабильный хостинг, то можете попробовать наш и вы не разочаруетесь.
MySQL – система управления базами данных (СУБД), используемая чаще всего в веб-разработке, но и не только там. MySQL является, наверное, одной из самых распостранённых СУБД. Её сильные стороны – быстрота, надёжность, универсальность. Ниже о том, как MySQL можно установить на сервер Ubuntu 20.04.
Установка MySQL 8.0
Первым делом, как всегда, необходимо обновить репозитории пакетов сервера:
$ sudo apt update
Теперь можно переходить к установке пакетов MySQL:
$ sudo apt install mysql-server
На момент написания статьи в репозиториях доступна версия 8.0.22. Проверить версию установленного пакета можно при помощи команды:
$ mysql -V
На этом процесс установки MySQL закончен. Теперь, необходимо внести некоторые изменения в конфигурацию установленной СУБД.
Настройка MySQL
Настройка заключается в изменении некоторых наиболее уязвимых опций СУБД, которые используются по умолчанию. Данное действие производится при помощи встроенного в MySQL специального скрипта:
$ sudo mysql_secure_installation
Для начала в открывшемся диалоге необходимо определить, нужно ли производить настройку компоненты валидации пароля, используемой при проверке надёжности пароля в MySQL. Если вы даёте согласие на использование валидации пароля, скрипт предложит вам установить уровень валидации, выбрав из 0 – низкий, 1 – средний, 2 – высокий:
На следующем шаге нужно установить пароль для учётной записи root в MySQL:
Скрипт оценит надёжность введённого пароля и запросит вашего согласия на его использование:
В последующем диалоге можно использовать ответ Yes для удаления анонимных пользователей СУБД, запрещения удалённого подключения под рутовой учётной записью MySQL, удаления дефолтной БД test и для загрузки новых таблиц привилегий:
Настройка аутентификации с помощью пароля
Для аутентификации учётной записи root MySQL по умолчанию используется плагин auth_socket. Это во многом более безопасно и удобно, но может осложнять взаимодействие СУБД с внешними приложениями в случаях, когда необходимо предоставить им доступ к пользователю MySQL.
Чтобы использовать пароль для подключения к СУБД под учётной записью root нужно изменить метод аутентификации. В нашем случае это – auth_socket.
В командной строке необходимо подключиться к MySQL:
$ sudo mysql
и вывести список аккаунтов СУБД, в котором виден используемый ими метод аутентификации (колонка plugin), командой:
mysql> SELECT user, authentication_string, plugin,host FROM mysql.user;
Вывод данной инструкции должен выглядеть примерно так:
Для изменения метода аутентификации учётной записи root нужно использовать команду:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'psswd';
где значение psswd необходимо заменить на более надёжный пароль, который будет в дальнейшем использоваться учётной записью root для авторизации в MySQL.
Если вы планируете использовать MySQL с приложениями PHP, такими как phpMyAdmin, то возможно, будет актуально настроить аутентификацию с помощью более старого плагина mysql_native_password:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'psswd
';
Для применения произведённых изменений необходимо выполнить инструкцию:
mysql> FLUSH PRIVILEGES;
Проверить применение изменений можно набрав команду:
mysql> SELECT user, authentication_string, plugin,host FROM mysql.user;
Выход из оболочки MySQL производится командой:
mysql> exit
Если для подключения к MySQL будет использоваться специально созданная для этого учётная запись, то необходимо войти в MySQL командой:
$ sudo mysql
либо, если аутентификация рутовой учётной записи производится с помощью пароля:
$ mysql -u root -p
Далее, создайте нового пользователя:
mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'psswd';
Для предоставления новому пользователю прав на доступ к таблицам базы данных выполните инструкцию:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost' WITH GRANT OPTION;
После чего можно выйти из оболочки MySQL:
mysql> exit
Автоматический запуск MySQL
Каким бы способом не был установлен MySQL, его запуск должен производиться автоматически. Чтобы убедиться в этом, необходимо набрать:
$ systemctl status mysql.service
Также, активировать MySQL можно командой:
$ sudo systemctl start mysql
Теперь на вашем сервере произведена базовая установка СУБД MySQL.