- Установка MySQL в Ubuntu 22.04
- Установка MySQL в Ubuntu 22.04
- Установка из официальных репозиториев
- Установка из репозиториев разработчиков
- Настройка MySQL в Ubuntu
- Как исправить ошибку SET PASSWORD has no significance for user root@localhost
- Как удалить MySQL в Ubuntu
- Выводы
- Установка MySQL Linux — настройка и запуск
- Установка MySQL в трех популярных дистрибутивах
- How do I start/stop mysql server?
- 11 Answers 11
Установка MySQL в Ubuntu 22.04
MySQL — популярная система управления базами данных с открытым исходным кодом. Несмотря на то, что в последнее время набирает популярность PostgreSQL и форк MySQL — MariaDB созданный разработчиком оригинальной MySQL, сама MySQL всё ещё остается популярной.
В этой статье мы рассмотрим как установить MySQL в Ubuntu 22.04, а также как выполнить первоначальную настройку, для того чтобы у вас была возможность работать с базой данных.
Установка MySQL в Ubuntu 22.04
Для Ubuntu 22.04 доступна только версия MySQL 8. Версия 5.7 считается уже устаревшей и для неё пакеты в новой версии дистрибутива не собирались. Вы можете установить MySQL 8 из официальных репозиториев или же из репозитория разработчиков. На момент написания статьи там находятся одинаковые версии пакетов, но Ubuntu 22.04 только недавно вышла, к концу её срока поддержки ситуация может изменится.
Установка из официальных репозиториев
Для установки пакетов из официальных репозиториев сначала необходимо обновить списки пакетов в системе:
Затем выполните такую команду для установки MySQL сервера и клиента:
sudo apt install mysql-server mysql-client
Установка из репозиториев разработчиков
Установка MySQL в Ubuntu 22.04 из репозиториев разработчиков немного сложнее. Сначала необходимо добавить этот репозиторий в систему. Для загрузите deb пакет с конфигурацией репозитория из официального сайта:
Сайт может предложить вам зарегистрироваться, но это не обязательно, просто нажмите кнопку No thanks, just start my download:
Далее установите загруженный пакет используя команду:
sudo dpkg -i ~/Загрузки/mysql-apt-config
В процессе настройки пакета вам будет необходимо ответить на несколько вопросов установщика. На первом экране выберите Ок и нажмите Enter. На втором экране вы можете настроить версии компонентов. Поскольку сейчас доступна только одна версия MySQL, то здесь можно оставить всё по умолчанию. Просто спуститесь на пункт Ок с помощью стрелок вверх/вниз и нажмите Enter:
Обратите внимание, что надо выбирать именно пункт Ок когда вы хотите завершить настройку, иначе у вас сложится впечатление, что программа зациклилась. Затем, обновите список пакетов в репозиториях:
sudo apt install mysql-server mysql-client
Настройка MySQL в Ubuntu
Вне зависимости от того какой способ установки вы выбрали, во время установки MySQL задаст вам несколько вопросов. Сначала необходимо указать пароль root:
Затем этот пароль необходимо ввести ещё раз для подтверждения. Вы можете оставить пароль пустым, тогда MySQL будет использовать авторизацию Unix для входа при запуске клиента mysql из консоли, а удалённого доступа вообще не будет. Однако это только добавит проблем вам в будущем, поэтому лучше задать пароль root сейчас.
Далее установщик предупредит о том, что MySQL использует новый способ авторизации. Вы можете ознакомиться с информации в этом окне:
А затем установщик предложит оставить новый метод авторизации или вернутся на старый. Клиентские библиотеки для MySQL в Ubuntu уже собраны с поддержкой нового метода, так что его можно оставить:
Если вы не указали пароль root во время установки или установщик не запросил этот пароль, его нужно установить сейчас. Для этого выполните такую команду:
mysqladmin password -u root -p
Команда два спросит у вас новый пароль и подтверждение. Далее нужно выполнить mysql_secure_installation, для того чтобы защитить ваш MySQL сервер. Если вы задали пароль на этапе установки MySQL, то можете запускать команду без sudo. Если же нет, сначала необходимо установить пароль для пользователя root. Читайте об этом в следующем разделе.
После того как вы введете пароль root, команда спросит вас необходимо ли включать плагин валидации паролей MySQL. Если вы не знаете зачем он вам нужен, то включать его не надо, этот плагин не позволяет установить слишком простые пароли для пользователей MySQL и может создать новичкам много проблем. Поэтому на этом шаге можно ответить n:
Если же вы уже включили его и не знаете что делать дальше, посмотрите эту статью. Далее утилита спросит нужно ли менять пароль root. Тут тоже можно ответить n, так как пароль у вас уже установлен ранее:
На все остальные вопросы нужно отвечать утвердительно:
- Remove anonymous users — удалить аноноимных пользователей
- Disallow root login remotely — отключить удалённые подключения для root пользователя, это касается только удалённых подключений, подключения с localhost удалёнными не считаются.
- Remove test database and access to it — удалить тестовую базу данных.
- Reload privilege tables now — перезагрузить таблицу привелений.
На этом всё. При такой настройке использовать только sudo для подключения к mysql из консоли нельзя. Если вы попытаетесь это сделать то получите ошибку Access Denied. Теперь, для того чтобы подключится к MySQL с помощью консольного клиента необходимо ввести пароль root заданный ранее:
Как исправить ошибку SET PASSWORD has no significance for user root@localhost
Если вы во время установки MySQL не задали пароль root, то в качестве метода авторизации будет выбран unix_socket. При использовании этого метода в качестве пользователя root может авторизироваться только суперпользователь системы или пользователь с правами sudo. Когда mysql_secure_installation попытается поменять пароль, mysql вам сообщит что:
SET PASSWORD has no significance for user ‘root’@’localhost’ as the authentication method used doesn’t store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.
Что можно примерно перевести как: Выполнять метод SET PASSWORD для ‘root’@’localhost’ нет смысла потому что выбранный метод авторизации не поддерживает сохранение данных авторизации. Если вы хотите изменить параметры авторизации используйте ALTER USER.
Естественно, что метод авторизации unix_socket не поддерживает сохранение пароля, потому что он выполняет авторизацию не по паролю, а просто проверяет является ли текущий пользователь суперпользователем. Но и пропустить настройку пароля root если он не задан вы не можете, поэтому программа зациклится и не пустит вас дальше. Самый простой способ сделать это — использовать команду mysqladmin:
sudo mysqladmin password -u root -p
Если вы не хотите использовать mysqladmin, то можете сделать всё то же самое с помощью SQL запроса. Сначала необходимо подключится к MySQL и поменять метод авторизации и заодно пароль:
В окружении SQL выполните такую команду:
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘ваш_пароль’;
Затем вы можете закрыть клиент MySQL используя команду:
Далее необходимо запустить mysql_secure_installation и там ввести только что заданный пароль root. После этого вы сможете без проблем закончить настройку.
Обратите внимание, что теперь вы не сможете подключится к mysql через sudo без пароля, так как теперь используется метод авторизации по паролю. Если вы хотите вернуть всё как было, после выполнения mysql_secure_installation, подключитесь к MySQL используя пароль и выполните:
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH auth_socket;
Как удалить MySQL в Ubuntu
Удалить MySQL в Ubuntu 22.04 довольно просто. Если вы хотите просто удалить пакет, оставив конфигурацию используйте команду:
sudo apt remove mysql-server mysql-client
Если же вы хотите полностью удалить MySQL используйте команду purge:
Выводы
В этой статье мы рассмотрели как установить MySQL в Ubuntu 22.04, а также как выполнить первоначальную настройку и избежать возможных проблем.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Установка MySQL Linux — настройка и запуск
Система управления базами данных MySQL является очень универсальным программным продуктом. На ее основе можно создать движок для сайта, подключить имеющуюся базу данных, брать оттуда данные и вносить изменения.
В ОС Linux система работает в качестве демона — запущенного сервера.
Установка MySQL Linux производиться из консоли, минуя графические интерфейсы, во-первых надо знать подобную программу хорошо, если уж возникла потребность ей пользоваться, во-вторых нужно произвести базовые настройки, которые потом может придется корректировать.
Думается, аргументов хватит.
В различных дистрибутивах установка и запуск MySQL Linux производится немного по-разному, а настройка MySQL сервера одинакова.
Все действия производится от имени суперпользователя.
Установка MySQL в трех популярных дистрибутивах
Сейчас Gentoo нормально тянет нужные пакеты, если в выводе этой команды потребуется добавить что то и MySQL не установится, нужно добавить строки, подсвеченные зеленым шрифтом в файл /etc/portage/package.use, сохранить его и снова произвести установку.
Далее производим начальную настройку, генерируя конфигурацию по умолчанию
добавляем его в автозагрузку:
rc-update add MySQL default
yum install MySQL MySQL-server php-MySQL php-gd
Далее запускам демона и создаем первичную конфигурацию добавляем его в автозапуск:
service MySQLd start /usr/bin/MySQL_secure_installation chkconfig --levels 235 MySQLd on
Debian подобные системы, тоже устанавливаем, запускаем сервер, делаем его автоматически стартуемым, только первичная конфигурация создается не отдельной командой, а в процессе всей установки
-apt-get install MySQL-server php5-MySQL php5-gd /etc/init.d/MySQL start update-rc.d MySQL defaults
Установка MySQL Linux закончена, но в процессе выполнения приведенных команд при запуске скрипта настройки конфигурации по умолчанию потребуется ввести несколько параметров. Вот достаточно безопасная настройка MySQL Linux сервера:
первый вопрос пропускаем, нажимаем Enter, на втором устанавливаем пароль для root – администратора сервиса, на третьем удаляем анонимного пользователя (жмем букву Y), на 4-м разрешаем соединения с удаленными серверами, на 5-м — оставляем пока тестовую базу, и в завершении перезагружаем привилегии (опять жмем Y).
Затем смотрим таблицу пользователей командой:
Выйдет табличка в псевдографике, в ней должен остаться один пользователь root.
Если на компьютере настроен файрволл, то откроем на нем tcp-порт 3306 для MySQL на входящие и исходящие соединения.
Запуск MySQL Linux сервера после окончательной настройки
Далее надо сделать заново запуск MySQL Linux сервера, и уже можно работать.
Вводим в консоль MySQL, в консоли появится приглашение
Далее, вводя команды (сервис работает со стандартным языком MySQL-запросов), можно:
- SHOW DATABASES; -посмотреть существующие базы данных;
- CREATE DATABASE test2; — создать новую базу данных с именем test2;
- USE test2; — использовать для текущих изменений базу test2;
Такая установка MySQL Linux довольно примитивна, обычно ставится сразу три пакета — php, веб-сервер и MySQL, так как они тесно взаимосвязаны. Такой метод позволяет управлять базами данных и веб-приложениями уже не в консоли, а в окне браузера.
Также рекомендуем Вам к прочтению статьи, имеющие к этой процедуре отношение:
How do I start/stop mysql server?
I tried to find in some articles describing how to correctly start & stop mysql server. I found this link: How to start/stop MySql server on Ubuntu 8.04 | Abhi’s Blogging World I ran this command:
ERROR 1045 (28000) Access denied for user.
sudo /etc/init.d/mysql - root -p start
ERROR 1049 (42000) Unknown database 'start'.
MySQL server success started. Cool! So, what’s wrong with the other commands? Why do they result in error?
In fact, even with sudo it didn’t work for me, but then I found in the script the following hint: Rather than invoking init scripts through /etc/init.d, use the service(8) and it was ok
Generally you can use sudo -l to see what your specific user on your specific system is allowed to do with sudo. (Your permissions are configured in /etc/sudoers.) However I don’t know for sure if it would help in this particular case. EDIT: Wait, never mind, the access denied error looks like it is coming from MySQL or something, not sudo.
11 Answers 11
Your first two commands weren’t run as root so that is expected behaviour. You need to be root to stop/start mysql.
should work. Indeed it does, for me:
kojan:~> sudo /etc/init.d/mysql restart [sudo] password for chris: Stopping MySQL database server: mysqld. Starting MySQL database server: mysqld. Checking for corrupt, not cleanly closed and upgrade needing tables..
I used restart rather than start, since it was already running, but the effect is the same. Are you sure you entered your password correctly? 🙂 Have you edited your sudo config at all which would stop this working?
sudo /etc/init.d/mysql - root -p start
The arguments are wrong. an init.d script only takes start or stop or restart — just one word telling it what to do. You cannot give it multiple arguments as you were trying to do.
Anyway, the short answer is the one you actually got to work, is the recommended way. service is replacing all the init.d scripts over time, so you should get into the habit of using service . The page you link to was written in 2008, so has to be taken with some salt 🙂