Установка и настройка MySQL на Ubuntu

В данной статье рассмотрим, как установить standalone MySQL, создать пользователя базы данных и настроить его права.

Конфигурация оборудования

Сервер Ubuntu 18.04 LTS x86_64.

Как сэкономить время на установке MySQL

Воспользуйтесь нашим готовым облачным решением на базе СУБД MySQL. При регистрации вы получаете бесплатный бонусный счет, которого достаточно для работы в течение нескольких дней.

[попробовать облачную СУБД MySQL]

О MySQL

MySQL - широко используемая и высокопроизводительная база данных SQL. На сегодня различают:

  • Oracle MySQL - база данных от компании Oracle, которая однажды выкупила компанию MySQL.
  • MariaDB - после покупки компании MySQL компанией Oracle часть разработчиков  основала компанию MariaDB Corporation и занялась разработкой своей версии MySQL, свободной от лицензионных ограничений Oracle (подробнее читайте тут). MariaDB поставляется в различных дистрибутивах Linux, в том числе Debian и Ubuntu.
  • Percona Server for MySQL - продукт компании Percona с акцентом на стабильность, производительность и работу в кластере. Среди прочих преимуществ - возможность multimaster репликации и масса дополнительных утилит (например, Xtrabackup), ускоряющих процесс резервного копирования/восстановления.

Далее рассмотрим установку на примере Percona Server for MySQL.

Установка Standalone MySQL

  1. Авторизуйтесь на сервере Ubuntu 18.04.
  2. Обновите списки репозиториев:
ubuntu@ubuntu-standard-2-4-40gb:~$ sudo apt-get update
  1. Установите дополнительные пакеты:
ubuntu@ubuntu-standard-2-4-40gb:~$ sudo apt-get install -y gnupg2
  1. Скачайте установочный deb-пакет, который содержит утилиту percona-release, позволяющую выбрать тип сервера и ветку (mysql 5.7, mysql 8, mysql cluster 5.7 и так далее):
ubuntu@ubuntu-standard-2-4-40gb:~$ wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
--2020-02-13 11:57:32--  
  1. Установите скачанный deb-пакет:
ubuntu@ubuntu-standard-2-4-40gb:~$ sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
Selecting previously unselected package percona-release.
(Reading database ... 46568 files and directories currently installed.)
Preparing to unpack percona-release_latest.bionic_all.deb ...
Unpacking percona-release (1.0-14.generic) ...
Setting up percona-release (1.0-14.generic) ...
* Enabling the Percona Original repository
<*> All done!
==> Please run "apt-get update" to apply changes
The percona-release package now contains a percona-release script that can enable additional repositories for our newer products.

For example, to enable the Percona Server 8.0 repository use:

  percona-release setup ps80

Note: To avoid conflicts with older product versions, the percona-release setup command may disable our original repository for some products.

For more information, please visit:
  https://www.percona.com/doc/percona-repo-config/percona-release.html
  1. Выберите ветку MySQL (в нашем примере - mysql 8):
ubuntu@ubuntu-standard-2-4-40gb:~$ sudo percona-release setup ps80
* Disabling all Percona Repositories
* Enabling the Percona Server 8.0 repository
* Enabling the Percona Tools repository
  1. Установите сервер Percona MySQL:
ubuntu@ubuntu-standard-2-4-40gb:~$ sudo apt-get install percona-server-server

Примечание.

Установите root-пароль для MySQL и плагин авторизации. В mysql 8 по умолчанию используется новый алгоритм caching_sha2_password. Если необходимо обеспечить совместимость с предыдущими версиями mysql, выберите mysql_native_password (Legacy Authentication Method).

  1. Убедитесь, что сервис работает и слушает порты:
ubuntu@ubuntu-standard-2-4-40gb:~$ ps ax | grep mysql
 7151 ?        Ssl    0:25 /usr/sbin/mysqld
 7776 pts/0    S+     0:00 grep --color=auto mysql
ubuntu@ubuntu-standard-2-4-40gb:~$ sudo netstat -tulpn | grep mysql
tcp6       0      0 :::3306                 :::*                    LISTEN      7151/mysqld
tcp6       0      0 :::33060                :::*                    LISTEN      7151/mysqld


 

Внимание!

По умолчанию MySQL слушает все доступные интерфейсы.

На этом установка завершена. Далее рассмотрим пример создания базы данных и пользователя, а также предоставление прав доступа пользователю.

Создание БД и пользователя

  1. Авторизуйтесь в mysql cli и создайте базу данных:
ubuntu@ubuntu-standard-2-4-40gb:~$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.18-9 Percona Server (GPL), Release '9', Revision '53e606f'

Copyright (c) 2009-2019 Percona LLC and/or its affiliates
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

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> create database mybase;
Query OK, 1 row affected (0.03 sec)

mysql>

Примечание.

При создании базы данных укажите пароль, который вы указали при установке сервера Percona MySQL.

  1. Создайте пользователя myuser с паролем mypass:

mysql> create user 'myuser'@'%' identified by 'mypass';
Query OK, 0 rows affected (0.03 sec)

mysql>
   

Примечание. 

Символы @’%’ после имени пользователя указывают на возможность доступа с любого IP-адреса.

  1. Предоставьте пользователю все права доступа к базе данных mybase:

mysql> grant all privileges on mybase.* to 'myuser'@'%';
Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql>
  1. Авторизуйтесь в mysql cli с учетными данными пользователя myuser:

ubuntu@ubuntu-standard-2-4-40gb:~$ mysql -umyuser -pmypass
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.18-9 Percona Server (GPL), Release '9', Revision '53e606f'


Copyright (c) 2009-2019 Percona LLC and/or its affiliates
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.


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> use mysql;
ERROR 1044 (42000): Access denied for user 'myuser'@'%' to database 'mysql'
mysql> use mybase
Database changed
mysql> show tables;
Empty set (0.01 sec)


mysql>
В результате у пользователя myuser будет только доступ к базе mybase, доступа к базе mysql - не будет.

Предоставление сетевого доступа

По умолчанию сервер Percona MySQL доступен по сети. Это можно проверить с любого другого хоста:

root@ash:~# mysql -h <PERCONA_MYSQL_SERVER_IP> -umyuser -pmypass
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.18-9 Percona Server (GPL), Release '9', Revision '53e606f'


Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


MySQL [(none)]>
Чтобы в целях безопасности оставить только локальный доступ к базе данных, в каталоге  /etc/mysql/mysql.conf.d создайте файл bind-override.cnf  со следующим содержимым:
ubuntu@ubuntu-standard-2-4-40gb:~$ sudo cat /etc/mysql/mysql.conf.d/bind-override.cnf
[mysqld]
bind-address = 127.0.0.1
mysqlx_bind_address             = 127.0.0.1
Затем перезапустите Percona MySQL Server:
ubuntu@ubuntu-standard-2-4-40gb:~$ sudo systemctl restart mysql
 И убедитесь, что  сервер слушает только localhost:
ubuntu@ubuntu-standard-2-4-40gb:~$ sudo netstat -tulpn | grep mysql
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 8319/mysqld
tcp        0      0 127.0.0.1:33060         0.0.0.0:*               LISTEN      8319/mysqld

Обратная связь

Возникли проблемы или остались вопросы? Напишите нам, мы будем рады вам помочь.