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

  • 13 ноября 2019
  • 5753
0%

Помогло?

Всем привет. Сегодня мы установим mysql в ubuntu. Если следовать простой инструкции, то сложностей точно не возникнет. Итак, можно смело приступать.

  1. Процесс установки
  2. Неожиданная ошибка после настройки can’t connect to local Mysql Server
  3. Процесс настройки mysql
  4. Настройка прав и привилегий
  5. Создание нового пользователя

Процесс установки

sudo apt update
sudo apt install mysql-server -y

-y означает то, что вы будете отвечать согласием на все команды, таким образом, все установится без вашего участия. Можете не волноваться, если вы запускаете эту команду. Ведь наверняка вы хотите установить mysql, какие могут быть еще вопросы ? =)

Процесс установки mysql

Неожиданная ошибка после настройки can’t connect to local Mysql Server

sudo mysql_secure_installation

По факту это помощник в установке, который настроит всю систему на основе ваших ответов. 

Возможно после запуска вы столкнетесь с ошибкой 

Error: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 

Ошибка can’t connect to local Mysql Server

Я столкнулся. Что значит эта ошибка? Сокета либо нет, либо к нему нет доступа. Поэтому идем в папку:

cd /var/run/mysqld

и там действительно пусто. Сокета там нет. Создается он в процессе запуска mysql. Поэтому проверим статус сервиса, следующей командой:

sudo service mysql status

* MySQL is stopped.

Mysql stop

Давайте его запустим:

sudo service mysql start

* Starting MySQL database server mysqld

Проверим статус:

sudo service mysql status

Mysql status

Можете еще зайти в папку /var/run/mysqld/. Там вы увидите сокет.

Mysql socket

Обратите внимание, с какими правами и под каким пользователем запущен сокет. Часто из-за нехватки прав может быть такая же ошибка

Процесс настройки mysql

Запускаем опять:

sudo mysql_secure_installation

Первый вопрос, который вам зададут: VALIDATE PASSWORD PLUGIN. Это плагин, который позволит определить надежность вашего будущего пароля. Я бы нажал Y. Не вижу в нем ничего плохого. Смело устанавливаем.

VALIDATE PASSWORD PLUGIN

Далее вам будет предложено выбрать сложность этого пароля. Смотрите сами: если хотите “поиграться” или делаете mysql для локальной разработки - берите попроще, если это продакшн - только максимальный.

Сложность пароля

Теперь вам нужно ввести пароль и подтвердить его, а после - согласиться с вводом. Здесь можно задать что-то простое и запоминающееся. Все-равно мы будем менять пароль позже.

Удаление анонимных пользователей

В mysql есть анонимные пользователи, которые могут подключаться без аккаунта. Их система предлагает удалить - соглашаемся 

Временные базы данных

В целях безопасности запрещаем подключение к бд с других серверов. отвечаем - Y

Внешние подключения mysql

Удаляем тестовую базу. Отвечаем - Y

Временные базы данных

Перезагружаем таблицу с привилегиями. Отвечаем - Y

Перезагрузка привелегий

Если все пройдет хорошо, то в конце вы получите сообщение: 

All done!

All done

Настройка прав и привилегий

В mysql с версии 5.7 авторизация root пользователя проходит не через пароль, а посредством auth_socket. То есть, если вы выполните команду:

sudo mysql

то сможете легко попасть в интерфейс программы:

Интерфейс программы mysql

Давайте все же настроим так, чтобы пользователь root мог выполнить вход только по паролю.

Для этого введем следующую команду:

SELECT user,authentication_string,plugin,host FROM mysql.user;

Select user

Чтобы поменять auth_socket на mysql_native_password, нам потребуется выполнить следующую команду. Только не забудьте поменять слово “password” на сильный пароль

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Query OK, 0 rows affected (0.00 sec)

Alter user

Закрепляем все изменения командой:

FLUSH PRIVILEGES;

Flush priveleges

Запустим команду для проверки плагина авторизации еще раз:

SELECT user,authentication_string,plugin,host FROM mysql.user;

Теперь вы должны увидеть там mysql_native_password

root с паролем

вводим команду:

exit

А теперь давайте занова попробуем подключиться:

sudo mysql

Вероятнее всего, вы получите ошибку:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Чтобы подключиться к бд, необходимо использовать пару “логин-пароль”:

sudo mysql -u root -p

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

Теперь я рекомендую вам создать нового пользователя, который будет работать с нужной ему базой данных. По аналогии, вместо слова password задаем пароль:

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';

Query OK, 0 rows affected (0.00 sec)

Create user

Теперь давайте выйдем:

exit

Зайдите сначала под root, а потом пользователем user и поочередно выполните команду:

show databases;

вот что видит root:

show databases

А что user:

show databases

У user'a список меньше. Давайте дадим ему привилегии. Заходим под пользователем root:

GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

grant privileges

Данными командами мы даем все права пользователю user. Можете почитать более подробно про эту команду. Фактически вы можете дать права на 1 базу на определенный перечень команд.

Теперь, если вы зайдете под пользователем user, то увидите весь список баз данных:

Заключение.

В целом, на этом настройка mysql заканчивается. У вас есть рабочая mysql 5.7 и пользователь с максимальными правами. Что еще для счастья надо? :)

Содержание

Облако тегов

Следующая статья

Рекурсия в php

Хочешь шарить в рекурсиях? Ведь есть много задач на эту тему. В этом уроке мы возьмем массив и научимся с ним работать правильно, используя знания рекурсии. После этого урока любой массив будет вам по зубам.

Сообщения: (6)

?
Публикуя сообщение, вы соглашаетесь с пользовательским соглашением
ААлексей4 года назад
А будет урок, по настройке mysql в Windows?
Ответить
?
Публикуя сообщение, вы соглашаетесь с пользовательским соглашением
Скрыть ответы: (2)
ААдминистратор4 года назад
Признаться, я уже давно не работал в Windows, да и не считаю эту ОС удобной для разработки. Несколько лет использовал Ubuntu. Но последний год у меня Debian 10. И с увереностью могу сказать, что мой кастомный Debian мне нравится больше. Если будет интересно могу, как-нибуду выложить гайд, как я его настраивал ;)
Ответить
ААлексей4 года назад
@Администратор, если есть такая возможность - выложите. Я только за! :)
Ответить
ЛЛиля4 года назад
Сейчас уже актуально использовать mysql8. Редкие проекты бывают на 5.7, моих практически нет.
Ответить
?
Публикуя сообщение, вы соглашаетесь с пользовательским соглашением
Скрыть ответы: (2)
ААдминистратор4 года назад
Я тоже в последнее время ставлю mysql8. Он более производительный и в нем больше возможностей. Эта статья передает основную суть установки и настройки. Принцип ничем не отличается от настройки той же 8ки.
Ответить
XX-Y-Z4 года назад
Мы переехали с 5.7 на 8 и разницы большой не почувствовали. Хотя тесты в разных блогах показывают, что должен быть прирост чуть ли не в 2 раза. Многое зависит от оптимизации SQL запросов.
Ответить

Читайте также