Установка и настройка mysql в Ubuntu
Всем привет. Сегодня мы установим mysql в ubuntu. Если следовать простой инструкции, то сложностей точно не возникнет. Итак, можно смело приступать.
- Процесс установки
- Неожиданная ошибка после настройки can’t connect to local Mysql Server
- Процесс настройки mysql
- Настройка прав и привилегий
- Создание нового пользователя
Процесс установки
sudo apt update
sudo apt install mysql-server -y
-y означает то, что вы будете отвечать согласием на все команды, таким образом, все установится без вашего участия. Можете не волноваться, если вы запускаете эту команду. Ведь наверняка вы хотите установить 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)
Я столкнулся. Что значит эта ошибка? Сокета либо нет, либо к нему нет доступа. Поэтому идем в папку:
cd /var/run/mysqld
и там действительно пусто. Сокета там нет. Создается он в процессе запуска mysql. Поэтому проверим статус сервиса, следующей командой:
sudo service mysql status
* MySQL is stopped.
Давайте его запустим:
sudo service mysql start
* Starting MySQL database server mysqld
Проверим статус:
sudo service mysql status
Можете еще зайти в папку /var/run/mysqld/. Там вы увидите сокет.
Обратите внимание, с какими правами и под каким пользователем запущен сокет. Часто из-за нехватки прав может быть такая же ошибка
Процесс настройки mysql
Запускаем опять:
sudo mysql_secure_installation
Первый вопрос, который вам зададут: VALIDATE PASSWORD PLUGIN. Это плагин, который позволит определить надежность вашего будущего пароля. Я бы нажал Y. Не вижу в нем ничего плохого. Смело устанавливаем.
Далее вам будет предложено выбрать сложность этого пароля. Смотрите сами: если хотите “поиграться” или делаете mysql для локальной разработки - берите попроще, если это продакшн - только максимальный.
Теперь вам нужно ввести пароль и подтвердить его, а после - согласиться с вводом. Здесь можно задать что-то простое и запоминающееся. Все-равно мы будем менять пароль позже.
В mysql есть анонимные пользователи, которые могут подключаться без аккаунта. Их система предлагает удалить - соглашаемся
В целях безопасности запрещаем подключение к бд с других серверов. отвечаем - Y
Удаляем тестовую базу. Отвечаем - Y
Перезагружаем таблицу с привилегиями. Отвечаем - Y
Если все пройдет хорошо, то в конце вы получите сообщение:
All done!
Настройка прав и привилегий
В mysql с версии 5.7 авторизация root пользователя проходит не через пароль, а посредством auth_socket. То есть, если вы выполните команду:
sudo mysql
то сможете легко попасть в интерфейс программы:
Давайте все же настроим так, чтобы пользователь root мог выполнить вход только по паролю.
Для этого введем следующую команду:
SELECT user,authentication_string,plugin,host FROM mysql.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)
Закрепляем все изменения командой:
FLUSH PRIVILEGES;
Запустим команду для проверки плагина авторизации еще раз:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Теперь вы должны увидеть там mysql_native_password
вводим команду:
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)
Теперь давайте выйдем:
exit
Зайдите сначала под root, а потом пользователем user и поочередно выполните команду:
show databases;
вот что видит root:
А что user:
У user'a список меньше. Давайте дадим ему привилегии. Заходим под пользователем root:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Данными командами мы даем все права пользователю user. Можете почитать более подробно про эту команду. Фактически вы можете дать права на 1 базу на определенный перечень команд.
Теперь, если вы зайдете под пользователем user, то увидите весь список баз данных:
Заключение.
В целом, на этом настройка mysql заканчивается. У вас есть рабочая mysql 5.7 и пользователь с максимальными правами. Что еще для счастья надо? :)
Содержание
- Процесс установки
- Неожиданная ошибка после настройки can’t connect to local Mysql Server
- Процесс настройки mysql
- Настройка прав и привилегий
- Создание нового пользователя
Облако тегов
Следующая статья
Рекурсия в php
Хочешь шарить в рекурсиях? Ведь есть много задач на эту тему. В этом уроке мы возьмем массив и научимся с ним работать правильно, используя знания рекурсии. После этого урока любой массив будет вам по зубам.