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

  • 13 ноября 2019
  • 3092
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 curl), который в цикле совершит 100, 1000, 100000 запросов и либо "заспамит" почтовой рассылкой пользователя, либо накидает бессмысленных сообщений в нашу базу.

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

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

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