Шаг 3: настройка аутентификации и привилегий
В ОС Ubuntu c MySQL 5.7 (и более поздними версиями) аутентификация суперпользователя MySQL по умолчанию настроена на использование плагина auth_socket, а не пароля. С точки зрения безопасности это хороший вариант, однако могут быть некоторые проблемы, особенно в тех случаях, когда вам нужно дать другой программе (например, phpMyAdmin) доступ к пользователю.
Если вы хотите использовать пароль для подключения к MySQL в качестве суперпользователя, вам нужно изменить метод аутентификации с auth_socket на mysql_native_password. Для этого откройте консоль MySQL:
$ sudo mysql
Далее проверьте, какой метод аутентификации используется для каждого из ваших пользовательских аккаунтов MySQL:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user; Например, вывод может быть вот таким: +------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)
В этом примере вы видите, что аутентификация суперпользователя происходит с использованием плагина auth_socket. Чтобы поменять настройку на использование пароля, выполните команду ниже. Обязательно выберите хороший и сложный пароль.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Теперь нужно, чтобы изменения вступили в силу. Введите команду:
mysql> FLUSH PRIVILEGES;
Еще раз запросите, какие аутентификационные методы используются:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Вывод должен выглядеть теперь вот так:
+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)
Теперь аутентификация суперпользователя будет происходит с использованием пароля. После этого можно выйти из консоли MySQL:
mysql> exit
Если вам нужен отдельный пользователь для работы с MySQL, то создать его можно следующим способом. Снова откройте консоль MySQL:
$ sudo mysql
Примечание: если вы выполнили действия выше, и теперь для аутентификации суперпользователя используется пароль, вам нужно использовать другую команду для доступа в консоль MySQL. Для того, чтобы авторизоваться с административными правами, введите:
$ mysql -u root -p
Теперь создайте нового пользователя и задайте надежный пароль:
mysql> CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
Теперь новому пользователю можно задать нужные вам права. Например, доступ ко всем таблицам в базе данных, а также возможность менять, добавлять и удалять права пользователей. Для этого введите следующую команду:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
В данном случае использовать команду FLUSH PRIVILEGES не нужно — она используется только в тех случаях, когда вы изменяете таблицы представлений с использованием INSERT, UPDATE или DELETE.
Поэтому просто выйдите из консоли MySQL:
mysql> exit
Теперь перейдем к тестированию MySQL.
Шаг 4 — Создание виртуального хоста для сайта
При использовании веб-сервера Apache вы можете создать виртуальные хосты (аналогичные серверным блокам в Nginx) для инкапсуляции данных конфигурации и размещения на одном сервере нескольких доменов. Мы настроим домен your_domain, но вы должны заменить это имя собственным доменным именем.
Примечание. Если вы используете DigitalOcean в качестве провайдера хостинга DNS, вы можете изучить нашу для получения подробных инструкций по настройке нового доменного имени и указать ваш сервер.
Создайте следующий каталог для your_domain:
Затем необходимо назначить права владения для директории с помощью переменной среды , которая будет использоваться для текущего системного пользователя:
После этого откройте новый файл конфигурации в директории Apache с помощью любого редактора командной строки. Мы будем использовать :
В результате будет создан новый пустой файл. Вставьте следующую пустую конфигурацию:
/etc/apache2/sites-available/your_domain.conf
Эта конфигурация указывает Apache обслуживать , используя в качестве корневого каталога. Если вы хотите протестировать Apache без доменного имени, вы можете удалить или закомментировать опции и , добавляя символ в начале строк опций.
Теперь вы можете использовать для активации нового виртуального хоста:
Возможно, вы захотите отключить сайт по умолчанию, устанавливаемый с Apache. Это требуется, если вы не используете собственное доменное имя, поскольку в таком случае конфигурация Apache по умолчанию перезаписывает ваш виртуальный хост. Чтобы отключить сайт Apache по умолчанию, введите следующую команду:
Чтобы убедиться в отсутствии ошибок синтаксиса в вашем файле конфигурации, выполните команду:
В заключение перезагрузите Apache, чтобы эти изменения вступили в силу:
Теперь ваш новый сайт активен, но корневой веб-каталог все еще пуст. Создайте файл в этом расположении, чтобы убедиться, что виртуальный хост работает, как ожидалось:
Внесите в файл следующее:
/var/www/your_domain/index.html
Откройте браузер и введите в адресную строку доменное имя вашего сервера или IP-адрес:
Страница будет выглядеть следующим образом:
Если вы видите эту страницу, это означает, что виртуальный хост Apache работает, как и ожидалось.
Вы можете оставить этот файл в качестве временной начальной страницы для вашего приложения, пока не настроите файл для его замены. Как только вы сделаете это, не забудьте удалить или переименовать файл из корневого каталога документов, так как он будет иметь приоритет перед файлом по умолчанию.
Примечание о в Apache
Если в Apache используются настройки по умолчанию, файл всегда будет иметь приоритет по сравнению файлом . Это полезно при настройке страниц техобслуживания приложений PHP посредством создания временного файла с информационным сообщением для посетителей. Поскольку эта страница будет иметь приоритет перед страницей , она станет начальной страницей приложения. После завершения обслуживания файл можно переименовать или удалить из корневого каталога документов, в результате чего восстановится обычная начальная страница приложения.
Если вы хотите изменить это поведение, отредактируйте файл и измените порядковое расположение файла в директиве :
/etc/apache2/mods-enabled/dir.conf
После сохранения и закрытия файла вам нужно будет перезагрузить Apache, чтобы изменения вступили в силу:
На следующем шаге мы создадим скрипт PHP для тестирования правильности установки и настройки PHP на вашем сервере.
5: Установка WordPress в браузере
Процедура установки WordPress проходит в браузере. Она задаст несколько вопросов и установит все необходимые таблицы в вашей базе данных. Здесь мы рассмотрим начальные этапы настройки WordPress, которые вы можете использовать в качестве отправной точки для создания собственного пользовательского веб-сайта, использующего удаленную базу данных.
Откройте в браузере:
Сначала будет предложено выбрать язык установки. Выберите язык, после чего вы перейдете к главной странице:
Введите необходимую информацию. После этого нужно будет войти в интерфейс администратора WordPress с помощью только что созданной учетной записи. Затем вы попадете в панель инструментов, где сможете настроить свой сайт и управлять им.
Шаг 2 — Установка MySQL
Мы запустили веб-сервер, и теперь нам нужно установить СУБД, которая может хранить данные вашего сайта и управлять ими. MySQL — популярная СУБД, используемая в средах PHP.
Используйте для получения и установки этого программного обеспечения:
Для подтверждения установки введите , а затем нажмите .
После завершения установки рекомендуется запустить скрипт безопасности, предустановленный в MySQL. Этот скрипт будет удалять некоторые небезопасные настройки по умолчанию и блокировать доступ к системе управления базы данных. Для запуска интерактивного скрипта введите следующую команду:
Скрипт предложит настроить плагин .
Примечание. Эту функцию следует активировать при наличии разумных оснований. Если она активирована, MySQL будет отклонять пароли, не соответствующие определенным критериям, и выводить сообщение об ошибке. Оставить проверку отключенной достаточно безопасно, но для входа в базу данных всегда нужно использовать надежные уникальные пароли.
Выберите для активации или любой другой вариант, чтобы продолжить без активации этой функции.
Если вы ответите утвердительно, вам будет предложено выбрать уровень проверки пароля. Если вы укажете самый высокий уровень , система будет выводить сообщения об ошибке при попытке установки пароля, который не будет содержать цифры, буквы в верхнем и нижнем регистре и специальные символы, или будет содержать распространенные словарные слова.
Вне зависимости от того, будете ли вы использовать плагин , ваш сервер предложит вам выбрать и подтвердить пароль для root user в MySQL. Не нужно путать его с системным пользователем root. Пользователь root базы данных — это пользователь с правами администратора, который имеет все права для работы с системой управления базы данных. Хотя в MySQL метод аутентификации пользователя root по умолчанию не требует использования пароля даже при его наличии, задайте надежный пароль для обеспечения дополнительной безопасности. Чуть дальше мы расскажем об этом подробнее.
Если вы включили использование паролей, вы увидите уровень надежности введенного пароля для пользователя root, и ваш сервер запросит у вас подтверждение дальнейшего использования этого пароля. Если вас устраивает текущий пароль, введите в диалоге для подтверждения:
Для всех остальных вопросов нужно выбирать и нажимать в каждом диалоге. Выбрав эти ответы, вы удалите ряд анонимных пользователей и тестовую базу данных, отключите возможность удаленного входа пользователя root и загрузите новые правила, чтобы внесенные изменения немедленно активировались в MySQL.
Завершив настройку, проверьте возможность входа в консоль MySQL, набрав следующую команду:
В результате будет установлено подключение к серверу MySQL с помощью пользователя root базы данных с правами администратора, который логически выводится в результате использования при запуске данной команды. Результат должен выглядеть следующим образом:
Для выхода из консоли MySQL введите следующую команду:
Обратите внимание, что для подключения под именем пользователя root не требуется вводить пароль, хотя вы и задали его при запуске скрипта. Это работает, поскольку используемый по умолчанию метод аутентификации для пользователя MariaDB с правами администратора — , а не
Хотя это может выглядеть как проблема безопасности, это делает сервер БД более безопасным, поскольку вход с правами root в MySQL доступен только системным пользователям с привилегиями sudo, которые подключаются через консоль или через приложение с тем же уровнем прав. На практике это означает, что вы не сможете использовать пользователя root базы данных с правами администратора для подключения из вашего приложения PHP. Настройка пароля учетной записи root MySQL работает как гарантия, если метод аутентификации по умолчанию меняется с на .
Для дополнительной безопасности рекомендуется иметь специальные учетные записи пользователей с менее обширными привилегиями, особенно если вы планируете использовать несколько баз данных на сервере.
Примечание. На момент написания этого руководства родная библиотека MySQL PHP не поддерживает , метод аутентификации MySQL 8 по умолчанию. Поэтому при создании пользователей базы данных для приложений PHP на MySQL 8 вам нужно убедиться, что они настроены на использование вместо этого пароля . Мы расскажем, как это сделать в .
Теперь ваш сервер MySQL установлен и защищен. Далее мы выполним установку PHP, последнего компонента набора LAMP.
6 ответов
Лучший ответ
Вы должны изменить старый пароль MySQL во время безопасной установки. Если вы не помните старый пароль, попробуйте выполнить следующие действия с правами суперпользователя: —
Остановите службу MySQL.
Запустите MySQL без проверки пароля и разрешений.
Подключиться к MySQL
Выполните следующие команды, чтобы установить новый пароль для пользователя root.
1
Ganesh
6 Янв 2020 в 09:58
Ответ, помеченный как правильный, технически неверен. Ubuntu 18.04 использует сокеты для авторизации, а не пароли!
(https : //websiteforstudents.com/mariadb-installed-without-password-prompts-for-root-on-ubuntu-17-10-18-04-beta/ )
Для меня вход в систему был прост:
Я чувствую, что тот, кто несет ответственность за эту «особенность», действительно бросил мяч. Должно было появиться сообщение о том, что Ubuntu больше не использует пароли при попытке запустить mysql. это было действительно радикальное изменение в функциональности.
8
user286904
7 Июн 2018 в 16:22
Я знаю об этой проблеме, и при использовании 16.04 это никогда не происходило. И в 18.04 я просто попытался использовать его для разрешения.
В этом случае я могу установить свой пароль, но он не работает
И этот код не решает проблему.
1
user9866732
29 Май 2018 в 21:11
После установки просто:
-
(да, нет пользователя нет прохода)
-
Теперь вы находитесь в консоли MySQL:
-
Вот и все. Теперь вы можете войти в консоль в следующий раз, как обычно:
1
Suraj Rao
12 Июн 2019 в 12:40
У меня также было много проблем с MySQL и MariaDB (Ubuntu 18.04). Я не мог заставить MariaDB работать. Я оба использую инструкции в Как принудительно удалить MySQL и MariaDB из Ubuntu 16.04, без `apt-get` и` dpkg`?
И
Затем установил MySQL, как описано на https: //dev.mysql .com / DOC / MySQL -APT — репо -быстро- гид / о /
Работает хорошо теперь даже после перезагрузки. Не знаю, почему это решение не так широко распространено!
Mehrdad Pedramfar
16 Фев 2019 в 07:50
В течение последних 24 часов я пытался избавиться от этих ошибок и перейти с 16.04 на 18.04 с той же базой данных, но ни одна из просмотренных веб-страниц мне не помогла. Это был ад.
Попытки systemctl status mysql.service и journalctl -xe оказались тупиковыми — никаких подсказок.
Но ошибка:
Привело меня к пониманию, что MySQL-сервер 18.04 имеет несколько иную структуру. Во время установки я много раз видел файл вроде: / etc / mysql / FROZEN.
И только я глубоко прочитал это, я понимаю, что моя ошибка исходила из разных версий MySQL. В нем говорилось, что я инициировал понижение (с mysql-server-5.7 до mysql-server-5.6), несмотря на то, что был уверен, что не сделал этого, так как устанавливал mysql-server-5.7.
Единственное решение, которое работало для меня, было: удаление всех файлов (и баз данных) из / var / lib / mysql вручную и переустановка mysql-server и mysql-client
Я скопировал их в другое место, но потом не смог их восстановить. Итак, проблема была в базах данных, что не могло быть перенесено. И я также не смог найти mysql-server-5.6 для Ubuntu 18.04 (я читал, что какой-то парень сделал это вручную, скомпилировав). К счастью, это было сделано на тестовом сервере, поэтому ничего ценного не было потеряно. Но в любом случае, в следующий раз у меня будет резервная копия MySQL до переноса версии Ubuntu и чистой установки, вместо того, чтобы пытаться сохранить существующие базы данных .
sanka
3 Янв 2019 в 11:12
Реляционная модель базы данных
В реляционной модели, в отличие от иерархической или сетевой, не существует физических отношений. Вся информация хранится в виде таблиц (отношений), состоящих из рядов и столбцов. А данные двух таблиц связаны общими столбцами, а не физическими ссылками или указателями. Для манипуляций с рядами данных существуют специальные операторы.
В отличие от двух других типов СУБД, в реляционных моделях данных нет необходимости просматривать все указатели, что облегчает выполнение запросов на выборку информации по сравнению с сетевыми и иерархическими СУБД. Это одна из основных причин, почему реляционная модель оказалась более удобна. Распространённые реляционные СУБД: Oracle, Sybase, DB2, Ingres, Informix и MS-SQL Server.
«В реляционной модели, как объекты, так и их отношения представлены только таблицами, и ничем более».
РСУБД — реляционная система управления базами данных, основанная на реляционной модели Э. Ф. Кодда. Она позволяет определять структурные аспекты данных, обработки отношений и их целостности. В такой базе информационное наполнение и отношения внутри него представлены в виде таблиц — наборов записей с общими полями.
Реляционные таблицы обладают следующими свойствами:
- Все значения атомарны.
- Каждый ряд уникален.
- Порядок столбцов не важен.
- Порядок рядов не важен.
- У каждого столбца есть своё уникальное имя.
Некоторые поля могут быть определены как ключевые. Это значит, что для ускорения поиска конкретных значений будет использоваться индексация. Когда поля двух различных таблиц получают данные из одного набора, можно использовать оператор JOIN для выбора связанных записей двух таблиц, сопоставив значения полей.
Часто у полей будет одно и то же имя в обеих таблицах. Например, таблица «Заказы» может содержать пары «ID-покупателя» и «код-товара». А в таблице «Товар» могут быть пары «код-товара» и «цена». Поэтому чтобы рассчитать чек для определённого покупателя, необходимо суммировать цену всех купленных им товаров, использовав JOIN в полях «код-товара» этих двух таблиц. Такие действия можно расширить до объединения нескольких полей в нескольких таблицах.
Поскольку отношения здесь определяются только временем поиска, реляционные базы данных классифицируются как динамические системы.
Шаг 4: тестирование MySQL
Вне зависимости от того, как вы установили MySQL, СУБД должна запуститься автоматически.
Проверить статус можно следующей командой:
$ systemctl status mysql.service
Вывод должен быть примерно вот таким:
mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en Active: active (running) since Wed 2018-06-20 21:21:25 UTC; 30min ago Main PID: 3754 (mysqld) Tasks: 28 Memory: 142.3M CPU: 1.994s CGroup: /system.slice/mysql.service └─3754 /usr/sbin/mysqld
Если же MySQL по какой-то причине не работает, ее можно запустить командой:
$ sudo systemctl start mysql
Дополнительно можно выполнить проверку, используя mysqladmin, который позволяет использовать административные команды. Например, при помощи команды ниже можно подключиться к MySQL в качестве суперпользователя (-u root), запросить пароль (-p) и показать версию:
$ sudo mysqladmin -p -u root version
Вывод будет примерно вот таким:
mysqladmin Ver 8.42 Distrib 5.7.21, for Linux on x86_64 Copyright (c) 2000, 2018, 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. Server version 5.7.21-1ubuntu1 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 30 min 54 sec Threads: 1 Questions: 12 Slow queries: 0 Opens: 115 Flush tables: 1 Open tables: 34 Queries per second avg: 0.006
Значит, MySQL запущена и работает.
Заказывайте VDS для своих проектов в компании Timeweb: https://timeweb.com/ru/services/vds/
Шаг 2: настройка MySQL
Если вы установили одну из свежих версий MySQL, то вы можете просто запустить включенный в нее скрипт безопасности. Он позволит изменить некоторые базовые настройки (например, настройки для удаленного доступа). В более старых версиях вносить эти изменения приходилось вручную (в то время как сейчас они будут выполнены автоматически).
Запустите скрипт безопасности:
$ sudo mysql_secure_installation
После этого вы сможете внести некоторые изменения в настройки безопасности MySQL.
Первый запрос — хотите ли вы использовать Validate Password Plugin, который используется для тестирования вашего пароля (плагин проверяет надежность пароля с точки зрения взлома).
Следующий запрос — установка пароля для суперпользователя. Введите и подтвердите выбор пароля.
Далее можно просто нажимать Y и затем Enter для того, чтобы внести необходимые изменения. В результате будут удалены некоторые анонимные пользователи и тестовая база данных, будет отключена удаленная авторизация для суперпользователя и будут внесены некоторые другие изменения.
Для того, чтобы создать каталог данных MySQL, вам нужно использовать:
- mysql_install_db — для версий до 5.7.6;
- mysqld —initialize — для версий 5.7.6 и более поздних.
Если вы следовали этой инструкции, то каталог данных был создан автоматически, и вам ничего делать не надо. И если вы введете команду, то увидите следующую ошибку:
mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists) . . . 2018-06-20T13:48:00.572066Z 0 Aborting
Обратите внимание, что несмотря на то, что вы установите пароль для суперпользователя MySQL, для этого пользователя не включена авторизация с паролем при подключении к MySQL. Это можно изменить, выполнив следующие действия
1: Добавление репозитория MySQL
Разработчики MySQL предоставляют файл .deb, который отвечает за настройку и установку официальных репозиториев MySQL. Добавив репозиторий, вы сможете установить новую версию MySQL с помощью стандартного пакетного менеджера системы (в данном случае это apt). Загрузите файл .deb с помощью curl и установите его с помощью команды dpkg.
Теперь можно загрузить файл. Откройте каталог:
Загрузите файл с помощью команды curl. Вставьте в команду скопированную ссылку на пакет.
Флаг -O помещает вывод команды в файл, а –L включает поддержку переадресации HTTP (это необходимо, потому что скопированный адрес пакета перенаправит вас в другое место, прежде чем загрузить файл).
Файл будет загружен в текущий каталог. Просмотрите содержимое каталога:
Теперь можно установить полученный файл:
Команда dpkg используется для установки, удаления и проверки пакетов программного обеспечения .deb. Флаг –i указывает компоненты, которые нужно установить.
Во время установки вам будет представлен экран конфигурации, с помощью которого вы можете указать, какую версию MySQL нужно использовать, и установить репозитории других инструментов, связанных с MySQL. По умолчанию файл добавит информацию только о репозитории последней стабильной версии MySQL. В данном случае этого достаточно; выберите Ok и нажмите Enter.
После этого репозиторий будет добавлен на сервер. Обновите индекс пакетов:
Чтобы не засорять пространство сервера ненужными файлами, удалите этот файл:
Репозиторий MySQL добавлен. Теперь с его помощью можно установить последнюю версию MySQL. Чтобы обновить конфигурацию этих репозиториев, просто запустите:
Затем выберите новые параметры и обновите индекс пакетов:
Установите MySQL на Ubuntu – автономный метод
Установка MySQL в Ubuntu с использованием стека LAMP устанавливает веб-сервер Apache и PHP. Если у вас нет планов запуска веб-сервера, эти пакеты не нужны. Поэтому, если вы хотите установить сервер MySQL на Ubuntu или Ubuntu Server в качестве отдельного пакета, вы можете сделать это с помощью следующей команды:
Во время установки MySQL на Ubuntu Server вам будет предложено ввести надежный пароль для учетной записи «root», как показано на рисунке ниже. Вам придется ввести один и тот же пароль дважды для подтверждения. Само собой разумеется, запишите пароль в безопасном месте или выберите то, что вы будете помнить.
MySQL Root Password
Корневая учетная запись – это учетная запись администратора MySQL. Корневая учетная запись может получить доступ ко всем базам данных в MySQL. Так как это представляет угрозу безопасности, всегда устанавливайте очень надежный пароль для учетной записи root. Если вы пытаетесь настроить разделяемую библиотеку MySQL для Kodi, вы создадите отдельного пользователя, который будет иметь доступ только к базе данных библиотеки Kodi.
После завершения установки MySQL вы можете ввести командную строку MySQL, используя команду , как показано ниже.
MySQL Prompt на Ubuntu
Если вы новичок в Linux, вы можете предпочесть не работать в режиме командной строки. Если это так, вы можете установить phpMyAdmin, который предлагает веб-интерфейс для создания и управления базами данных MySQL. Если вы решили использовать phpMyAdmin, взгляните на эти твики phpMyAdmin, чтобы улучшить свой опыт.
Стоит отметить, что если вы установите phpMyAdmin, то Apache и PHP будут установлены автоматически, так как они необходимы для работы phpMyAdmin. По этой причине я всегда рекомендую устанавливать весь сервер LAMP с помощью команды, как описано выше. Если по какой-то причине вы не хотите использовать Apache или PHP, вы можете установить Webmin в Ubuntu, в котором есть очень простой менеджер баз данных MySQL.