Создать базу данных mysql ubuntu

Обновлено: 04.07.2024

MySQL - это одна из самых популярных систем управления базами данных, которая применяется почти везде, начиная от различных предприятий и промышленности и заканчивая организацией работы веб-сайтов.

Сейчас существует несколько версий MySQL. Непосредственно MySQL, разрабатываемая компанией Oracle и свободный форк от основного разработчика MySQL - MariaDB. Имя MairaDB программа получила в честь первой дочери программиста, также как и MySQL в честь имени второй. В большинстве дистрибутивов Linux используется MariaDB, в том числе и в Ubuntu. Но в этой статье давайте рассмотрим установку именно MySQL в Ubuntu 20.04.

Установка MySQL 8 в Ubuntu

Программа и все необходимые компоненты есть в официальных репозиториях, поэтому установить её не составит труда. Для установки из официальных репозиториев сначала обновите списки пакетов:

sudo apt update

Затем установите необходимые пакеты:

sudo apt install mysql-server mysql-client

На данный момент в репозиториях Ubuntu 20.04 есть уже версия Mysql 8.20. Вы можете проверить установленную версию такой командой:

Кроме того, желательно проверить, запущенна ли служба MySQL:

sudo systemctl status mysql

Вы должны увидеть зеленую надпись Active, Running и версию программы, которую устанавливали.

Установка MySQL 5.7 в Ubuntu

Если вам нужна версия 5.7, то её в репозиториях нет, но вы можете получить эту версию из репозитория разработчика. Если в системе уже есть более новая версия, её надо полностью удалить:

sudo apt remove --autoremove mysql-server mysql-client

Также удалите каталог с базами данных MySQL они не совместимы со старой версией:

sudo rm -Rf /var/lib/mysql

Для установки репозитория скачайте этот пакет:

Затем установите его:

sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb

В процессе установки программа попросит выбрать дистрибутив. Если у вас Ubuntu 20.04 или выше, выбирайте версию для Ubuntu 18.04 - bionic:

Затем выберите MySQL Server and Cluster:

После этого останется выбрать нужную версию MySQL, например 5.7:

После этого обновите списки репозиториев и посмотрите какие версии MySQL доступны:

sudo apt update

sudo apt-cache policy mysql-server

Осталось установить установить mysql 5.7 в Ubuntu:

sudo apt install mysql-server=5.7.31-1ubuntu18.04 mysql-community-server=5.7.31-1ubuntu18.04 mysql-client=5.7.31-1ubuntu18.04

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

После этого вы снова можете посмотреть версию:

Настройка mysql в Ubuntu

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

На первом шаге настраивается плагин валидации пароля. Чтобы его включить нажмите Y, или его можно не включать. Затем надо задать сложность пароля, который позволит установить этот плагин. Здесь 0 означает слабый пароль, а 2 - сложный. Когда плагин будет настроен введите пароль root и подтвердите, что хотите использовать именно его:

Введите Y для отключения анонимного доступа к MySQL, затем ещё раз Y чтобы запретить подключаться к базе от имени root удаленно:

Снова Y, чтобы удалить тестовую базу данных. Затем, обновите привилегии для пользователей:

После завершения настройки вы можете подключиться к пользователя root к серверу баз данных из командной строки:

sudo mysql -u root

Здесь нам необходимо создать пользователя, от имени которого мы будем использовать базу данных, а также саму базу данных. Для этого воспользуемся командами SQL. Сначала создаем базу данных:

mysql> CREATE DATABASE testDB;

Далее создадим пользователя:

mysql> CREATE USER 'my_user'@'localhost' IDENTIFIED BY 'password';

Слова my_user и password нужно заменить на свои имя пользователя и пароль. Дальше нужно дать права пользователю на управление этой базой данных:

mysql> GRANT ALL PRIVILEGES ON testDB.* TO 'my_user'@'localhost'

Или вы можете дать права только на несколько инструкций:

mysql> GRANT SELECT,UPDATE,DELETE ON testDB.* TO 'my_user'@'localhost';

Если какую-либо инструкцию нужно запретить, удалите ее:

mysql> REVOKE UPDATE ON testDB.* FROM 'my_user'@'localhost';

После завершения работы с правами нужно их обновить:

mysql> FLUSH PRIVILEGES;

Чтобы убедиться что нет никого лишнего, вы можете вывести список пользователей:

Также вы можете посмотреть полномочия для нужного пользователя:

mysql> SHOW GRANTS FOR 'my_user'@'localhost';

Теперь установка MySQL Ubuntu 20.04 полностью завершена и вы можете использовать эту базу данных для решения своих задач.

Удаление MySQL в Ubuntu

Чтобы удалить mysql Ubuntu 20.04 понадобиться немного больше команд чем для удаления простого пакета. После удаления основных пакетов в системе остается еще много файлов. Мы рассмотрим как удалить все.

Сначала остановите сервисы:

sudo systemctl stop mysql
sudo killall -KILL mysql mysqld_safe mysqld

Удалите основные пакеты и их зависимости:

sudo apt -y purge mysql-server mysql-client
sudo apt -y autoremove --purge
sudo apt autoclean

Удалите пользователя mysql и остатки программы в системе:

deluser --remove-home mysql
sudo delgroup mysql
rm -rf /etc/apparmor.d/abstractions/mysql /etc/apparmor.d/cache/usr.sbin.mysqld /etc/mysql /var/lib/mysql /var/log/mysql* /var/log/upstart/mysql.log* /var/run/mysqld
updatedb

Удалите все логи подключений к mysql из терминала:

sudo find / -name .mysql_history -delete

Теперь ваша система полностью очищена от MySQL.

Выводы

В этой статье мы рассмотрели как выполняется установка MySQL в Ubuntu 20.04. Как видите, это не очень трудно, хотя и требует некоторых знаний и немного времени на то, чтобы со всем разобраться. Надеюсь, эта информация была для вас полезной.

Настройка MySQL на Ubuntu 18.04 и Nginx

Настройка MySQL на Ubuntu 18.04 и Nginx

Настройка MySQL на Ubuntu 18.04 и Nginx

Сборка LEMP была сделана в предыдущей статье, сейчас подробнее разберем настройку базы данных MySQL.

При базовой настройке я не настраивал безопасность, поэтому выполним команду

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

После этого необходимо подтвердить установку плагина Validate Password Plugin, который будет проверять безопасность паролей к базе данных. Нажимаем Y

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Далее необходимо выбрать уровень валидации паролей и ввести 0, 1 или 2.

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

После выбора уровня валидации необходимо придумать пароль, затем будет предложено удалить ананомного пользователя

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Далее будет вопрос - запретить пользователю root удаленный доступ?

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Далее будет вопрос - удалить тестовую базу данных?

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Далее входим в mysql под пользователем root с помощью команды

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Следующим запросом можно посмотреть данные по существующим пользователям

Настройка MySQL на сервере Ngnix на Ubuntu 18.04

Работа с MySQL в терминале

Из основных и необходимых манипуляций с базой данных MySQL через терминал часто применяются команды: создать базу данных, создать пользователя и пароль, дать привилегии пользователю, разрешить удаленное соединение с базой данных, узнать доступные базы данных на сервере, узнать существующих пользователей и их права, сделать дамп и развернуть дамп базы данных. Приведу примеры этих команд.

Чтобы создать базу данных, сначала необходимо авторизоваться как пользователь в mysql

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

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Чтобы посмотреть пользователей необходимо выполнить следующее. Сначала выбираем базу данных а потом выбираем пользователей из нее. Можно это сделать, как в примере выше, но можно и таким способом.

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

select user from user;

Или можно так, чтобы посмотреть, какой пользователь может соединяться с базой только через localhost, а какой с определенного IP, или же в случае "%" - с любого адреса.

select user, host from user;

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Создаем базу данных:

CREATE DATABASE namedatabase;

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Чтобы посмотреть список баз данных:

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Чтобы создать пользователя:

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Теперь дадим созданному пользователю привилегии на работу с нашей базой данных:

GRANT ALL PRIVILEGES ON namedatabase.* TO nameuser@localhost;

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

После этого необходимо обновить таблицу прав пользователей, чтобы изменения вступили в силу:

Чтобы посмотреть привилегии пользователей, можно использовать следующие команды. Эта команда выведет привилегии пользователя, под которым вы залогинились в базу данных.

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Чтобы посмотреть все привилегии всех пользователей:

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Чтобы посмотреть привилегии определенного пользователя:

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

После того, как дали привилегии, может понадобиться разрешить удаленное соединение к базе данных. Удаленное соединение к базе, это соединение с использованием сторонних программ, например, в PyCharm можно просматривать базу данных не только через терминал, а с использованием инструментов IDE

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Чтобы дать удаленное соединение к базе MySQL, необходимо открыть файл mysqld.cnf, например в редакторе vim

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

В открытом файле найти строку, которая начинается с bind-address. Чтобы найти строку в редакторе vim, необходимо в командном режиме (до нажатия клавиши i) поставить слэш и начать писать искомое слово, после того, как строка найдена, нажать Enter и перейти в режим редактирования (нажать клавишу i).

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

У меня установлено значение "0.0.0.0", что означает возможность подключения с любого IP, но вы можете поставить только свой IP. После изменения значения, необходимо сохранить и выйти из редактора vim. Чтобы это сделать, нажмите Esc - вы перейдете в командный режим, потом введите :wq - что означает "записать и выйти". Далее введите команду, чтобы перезапустить сервис mysql.

sudo systemctl restart mysql

Далее часто необходимо, это создание дампа, настройка бэкапа по cron, развертывание бэкапа из дампа.

Перед тем, как создать бэкап, создадим папку для бэкапов командой

После этого введем команду

mysqldump -u skdesigndb -p skdesign_ru > /var/backups-mysql/test-dump.sql

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

В команде вводится пользователь skdesigndb и название базы данных skdesign_ru, а пароль уже запрашивается после. Ждем какое-то время, все зависит от размера вашей базы данных, дальше можем проверить, что же получилось.

Можем посмотреть данные о бэкапе с помощью команды

head -n 5 /var/backups-mysql/test-dump.sql

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Можем воспользоваться и другой командой, чтобы узнать время создания и модификации файла

ls -la --full-time /var/backups-mysql/test-dump.sql

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Чтобы развернуть дамп MySQL

mysql -u user -p dbname < /var/backups-mysql/test-dump.sql

После потребуется ввести пароль. Но если вы хотите, например, поставить разворачивание бэкапа по cron, или удаленное создание бэкапа по cron с другого сервера, вам придется настроить специальную заготовку для ввода логина и пароля. Без этого, вы будете получать ошибку "(Warning: Using a password on the command line interface can be insecure.)"

mysql_config_editor set --login-path="nameconfig" --host="localhost_OR_IP" --user="USER" --password

Можно посмотреть готовые конфиги, если они уже были созданы

mysql_config_editor print --all

После этого можно такой конфиг использовать таким образом

mysql --login-path=nameconfig dbname < name-dump.sql

Чтобы добавить скрипт создания дампа MySQL в cron, сделаем так. В редакторе vim создаем файл с таким содержимым.

sudo vi /etc/cron.daily/mysql-backup

Также вводим такую команду

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

Работа с MySQL на сервере Ngnix на Ubuntu 18.04

30 2 * * * /usr/bin/mysqldump --login-path=nameconfig имя_базы > /backups/mysql-dump.sql

Если вам вдруг необходимо скачать дамп с одного сервера на другой сервер, то заходим на тот сервер, на который хотите скачать и с помощью утилиты scp выполняем такую операцию:

В данных примерах используется командная оболочка mysql и phpMyAdmin.

Если работа ведется на продуктивном сервере баз данных, рекомендуется сделать резервные копии.

Подключение к СУБД

Если мы планируем работать в командной строке, заходим в среду управления MySQL.

а) В Linux вводим команду:

* где root — пользователь, под которым мы будем подключаться к оболочке; ключ -p потребует ввода пароля.

б) В Windows запускаем командную строку — в меню пуск или найдя ее в поиске. Переходим в каталог, с установленной СУБД и запускаем одноименную команду mysql, например:

cd "%ProgramFiles%\MySQL\MySQL Server 5.5\bin\"

* в данном примере предполагается, что у нас установлена MySQL версии 5.5.

* здесь, как и в Linux, идет подключение к mysql/mariadb под учетной записью root с запросом пароля.

Создание новой базы

Для создания базы используется SQL-запрос CREATE DATABASE. Рассмотрим подробнее его использование.

Командная строка

Используйте данный шаблон команды:

> CREATE DATABASE newdb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

* вышеописанная команда создаст базу данных с названием newdb и кодировкой UTF-8 (самая распространенная и универсальная).

Проверить, что база появилась можно командой:

* данная команда выводит в консоль список баз, созданных в СУБД.

Подключиться к базе можно командой:

phpMyAdmin

В phpMyAdmin переходим в раздел Базы данных - вводим название новой базы - выбираем кодировку и нажимаем Создать:

Создаем базу данных в phpMyAdmin

Настройка прав доступа

Чтобы к созданной базе можно было подключиться, добавим пользователя:

* где newdb.* — наша база и все ее таблицы; dbuser@localhost — имя учетной записи, которая будет подключаться с локального сервера; password — придуманный нами пароль.
** В данном примере, учетной записи будут предоставлены полные права (ALL PRIVILEGES). Подробнее о правах в MySQL читайте статью Как создать пользователя MySQL и дать ему права.

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

* в данном примере мы выведем учетные записи, которым был дан прямой доступ к созданной нами базе. В данном списке не будут отражены пользователи с глобальными правами (например, root).

Поменять пароль пользователю можно одной из команд (в зависимости от версии СУБД):

* все 3 команды меняют пароль для пользователя dbuser@localhost на новый — new_password.

При необходимости, удалить пользователя можно командами:

* первая команда отнимает все привилегии, выданные пользователю. Вторая удаляет самого пользователя.

Некоторые рождены быть администраторами баз данных, а другие поручают им администрирование своих БД. Если вы относитесь ко второй группе, но вы нуждаетесь лишь в элементарных операциях, вроде создания или резервного копирования баз данных, то знайте, что выполнять эти операции намного проще, чем кажется. Давайте рассмотрим самые простые элементы администрирования баз данных MySQL.


Когда я говорю «простые», я и имею ввиду простые. Эта статья не сделает из вас профессионального администратора баз данных MySQL. Однако отсюда вы сможете почерпнуть некоторые знания о MySQL, которых вам вполне может хватить для решения задач, вроде настройки WordPress или создания резервной копии базы данных MySQL.

Вы также можете выполнять все эти операции при помощи phpMyAdmin, что, впрочем, и делают множество людей. Так зачем же напрягаться, забираясь в дебри командной строки? Первой причиной использования командной строки является отсутствие необходимости устанавливать и поддерживать дополнительное программное обеспечение, особенно, если вы общаетесь с MySQL нечасто.

Также, умение работать с MySQL из командной строки даёт вам возможность работать с ней и из скриптов. Вы же не можете работать из скриптов с phpMyAdmin (некоторые могут, но это уже больше напоминает извращения)? Так что, если вы хотите, например, организовать еженедельное копирование ваших баз данных, то умение работать с MySQL из командной строки будет весьма кстати.

В этой статье а освещу лишь основные моменты работы с MySQL: создание баз данных и таблиц, создание пользователей, удаление баз данных и отдельных таблиц, восстановление баз данных и работу с их резервными копиями. Подразумевается, что MySQL у вас уже установлен и вы готовы начать работу с командами.

Подключение

Итак, давайте начнём с подключения к MySQL при помощи команды:

Вместо username введите имя существующего в вашей инсталляции MySQL пользователя.

Теперь, находясь в оболочке mysql-клиента, можно увидеть список доступных БД при помощи команды:

Обратите на точку с запятой в конце. Она сообщает MySQL о том, что команда завершена. Если строку не завершить этим символом, то после нажатия Enter MySQL будет ожидать ввода продолжения команды в новой строке. Такое поведение MySQL часто оказывается полезным при вводе нескольких команд за один раз.

Также имейте ввиду, что MySQL хранит историю команд. Нажмите стрелку вверх и вы увидите введённую вами ранее команду.

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

заменив databasename на имя нужной вам базы данных. Нужной вам базы данных не существует и вам необходимо её создать? Нет проблем!

Создание баз данных и таблиц

Создать базы данных очень просто. Просто введите в оболочке MySQL команду:

заменив dbname на имя создаваемой БД.

Также, вы можете воспользоваться программой mysqladmin, чтобы создать новую БД:

Этот способ быстрее, если вам нужно лишь создать новую базу данных и, конечно, медленнее, если после создания БД вам нужно ввести ещё серию команд. Отчасти такому замедлению способствует необходимость каждый раз вводить пароль пользователя MySQL. В принципе, вы можете создать файл

/.my.cnf, поместив в него ваше имя пользователя и пароль MySQL, но я не рекомендую вам этого делать, поскольку это значительно снизит уровень безопасности.

Утилиту mysqladmin вы можете использовать для решения многих административных задач. Например, вы можете запускать, останавливать и перезагружать сервер MySQL. Ну, к примеру, остановить MySQL-сервер по какой-то причине? Воспользуйтесь командой:

Если желаете ознакомиться со списком всех доступных команд mysqladmin, воспользуйтесь ключом --help:

Чтобы создать таблицу в БД, используется инструкция CREATE TABLE table_name, после которой следует описание создаваемой таблицы. Поскольку каждая таблица обычно имеет несколько полей для хранения информации различных типов, то команды создания таблиц обычно получаются весьма длинными. Вот, например, команда, создающая таблицу для WordPress:

В этом примере я опустил некоторые инструкции ради краткости, однако основные моменты здесь отображены. После инструкции CREATE TABLE вы видите инструкции с описанием полей таблицы. Описание поля таблицы состоит из имени поля, типа данных, которые буду в нём храниться, а также определения, может ли поле иметь значение NULL (то есть, не содержать данных). Инструкции описания полей таблицы разделены запятыми, а последняя строка указывает MySQL, какой движок (в данном примере — MyISAM) использовать для работы с таблицей, а также опции, специфичные для таблицы в целом.

Не волнуйтесь, если для вас всё это кажется тарабарщиной. Всё, что вы сейчас увидели в примере выше фактически создаёт т. н. схему базы данных. Если вы пользуетесь приложениями, в комплекте которых поставляется схема БД для них, то вам вовсе необязательно знать, что именно делают инструкции, описанные в схеме.

Создание и настройка пользователя

Прежде, чем начать, вы должны знать пароль пользователя root в вашей инсталляции MySQL. Это не тот же самый root, который присутствует в вашей операционной системе. Чтобы не использовать учётную запись root для работы со всеми БД в вашей системе, вы можете создать отдельного пользователя. Например, чтобы работать с БД моего WordPress, я использую отдельного пользователя, наделённого не столь высокими привилегиями, как пользователь root.

Создать пользователя очень просто. Войдите в оболочку MySQL и дайте команду:

заменив bob на имя нужного вам пользователя, а password на пароль пользователя.

Однако, созданный пользователь не сможет делать ничего полезного до тех пор, пока ему не предоставить необходимые привилегии в базам данных. Например, если вы хотите дать пользователю bob полный доступ к базе данных wordpress_db, достаточно дать команду:

Вы можете ограничить перечень операций, которые будет разрешено выполнять указанному пользователю. Например, вы можете разрешить лишь операции SELECT, INSERT и DELETE. Подробнее узнать об этом вы можете в соответствующем разделе руководства MySQL.

Создание дампа базы данных

Базы данных MySQL хранятся на диске в двоичном виде в файлах с данными, индексных файле и файлах, описывающих структуру таблиц. Таким образом, каждая БД MySQL хранится в своём каталоге, расположенном в /var/lib/mysql, плюс три файла для каждой таблицы и файл .opt, содержащий параметры БД.

Конечно, можно организовать резервное копирование баз данных, путём простого копирования двоичных файлов, описанных выше, однако гораздо удобнее работать с дампами БД. Как это делается? Очень просто. MySQL имеет утилиту, называемую mysqldump. Например, чтобы сделать дамп БД wordpress_db, вы можете использовать команду:

которая сделает дамп БД wordpress_db в текстовом виде и сохранит его в файле wordpress.sql. Созданный текстовый файл будет содержать SQL-инструкции, выполнив которые, можно будет воссоздать базу данных, и будет иметь больший размер, нежели размер двоичных файлов БД. Например, размер моей БД WordPress составляет 39 мегабайт, в то время как дамп этой БД получился размером в 41 мегабайт. Это несколько больше размера БД в двоичном виде, поскольку дамп содержит некоторую избыточную информацию.

Также mysqldump может создавать дампы не всей БД, а отдельных таблиц.

Восстановить БД из дампа ещё проще. Давайте представим, что необходимо восстановить базу данных с именем wordpress_db из файла wordpress.sql, который мы создали ранее. Всё, что нам понадобится для этого, это имя базы данных, путь к файлу дампа и имя пользователя MySQL, имеющего достаточные привилегии для этого:

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

Итоги

Конечно, для полноценного администрирования MySQL вы должны знать гораздо больше. Как я уже говорил, можно вполне неплохо администрировать MySQL и при помощи phpMyAdmin. В будущих статьях я расскажу вам о нём, а также о более продвинутом использовании MySQL. А пока, я надеюсь, это руководство станет полезным для пользователей, которых интересуют лишь простые операции с MySQL, знание которых не требует квалификации администратора баз данных.

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