Создание и удаление баз в mysql/mariadb

Введение

Эта статья в первую очередь рассчитана на новичков в администрировании, для тех, кто хочет научиться самостоятельно производить импорт и экспорт баз данных. Зачем вам может это понадобиться? Допустим, вы хотите самостоятельно сделать бэкап, чтобы в дальнейшем при необходимости восстановить определенную версию базы данных. Или вам нужно сделать перенос сайта на другой сервер либо в другую среду разработки. В общем, причин может быть множество, поэтому понимание того, как сначала сделать, а потом импортировать резервную копию, лишним не будет.

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

а) доступ к серверу на базе Linux, на котором работает MySQL/MariaDB;
б) название базы данных и данные доступа к ней.

Как установить MySQL 8 в Debian 10

Шаг 1: Добавление репозитория MySQL

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

Во время установки пакета вам будет предложено настроить репозиторий MySQL APT для выбора версий сервера MySQL и других компонентов, которые вы хотите установить. Для установки последней версии оставьте все как есть, перейдите к Оk и нажмите Enter.

Шаг 2: Установка MySQL

После добавления репозитория обновите кэш пакетов apt и установите пакет сервера MySQL. При этом также будут установлены пакеты для клиента и другие зависимости.

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

После этого вас предупредят о новой системе аутентификации, на основе SHA256, использующейся в MySQL, нажмите Ok. Выберите плагин аутентификации (оставьте опцию по умолчанию, чтобы использовать рекомендуемый плагин) и нажмите кнопку Enter, чтобы завершить процесс установки.

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

Есть несколько команд systemctl, которые вам нужно знать, чтобы управлять (запускать, перезапускать и останавливать) службу MySQL, когда это будет необходимо:

Шаг 3: Настройка безопасности MySQL

Сервер MySQL из коробки не защищен, и для повышения безопасности потребуется запустить сценарий mysql_secure_installation. Выполните:

Прочитайте описание каждого вопроса и правильно ответьте на них. Во-первых, введите пароль пользователя root, который вы задали во время установки пакета. Вы можете выбрать y (для Yes) или n (для No), чтобы использовать или не использовать компонент VALIDATE PASSWORD.

Когда сценарий предложит вам установить новый пароль для пользователя root выберите No (вы уже установили его во время установки пакета). Затем внимательно следуйте другим подсказкам и выберите y (для YES), чтобы удалить анонимных пользователей, запретить удаленный вход под root в систему, удалить тестовую базу данных и перезагрузить таблицу привилегий.

Настройки MySQL Debian завершены, можно переходить к использованию.

Шаг 4: Проверка MySQL

После того как вы закончили настройку безопасности MySQL, можно начать использовать его для хранения данных для ваших веб-сайтов или веб-приложений. Чтобы получить доступ к оболочке MySQL, выполните следующую команду (пароль пользователя root введите по запросу, как показано на скриншоте):

Скопируйте базу данных MySQL с одного сервера на другой

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

  1. Экспортируйте базу данных на исходном сервере в файл дампа SQL.
  2. Скопируйте файл дампа SQL на конечный сервер
  3. Импортируйте файл дампа SQL на конечный сервер

Давайте посмотрим, как скопировать базу данных classicmodels с сервера на другой.

Сначала экспортируйте базу данных classicmodels в файл db.sql.

>mysqldump -u root -p --databases classicmodels > d:\db\db.sql
Enter password: **********

Обратите внимание , что опция –database позволяет включить mysqldump как операторы CREATE DATABASE и USE в файле SQL дамп. Эти операторы создадут базу данных classicmodels на конечном сервере и сделают новую базу данных базой данных по умолчанию для загрузки данных

Вкратце, следующие операторы включаются в начало файла дампа SQL, когда мы используем –databaseoption.

CREATE DATABASE `classicmodels`.
USE `classicmodels`;

В-третьих, импортируйте файл db.sql на сервер базы данных, предполагая, что файл db.sql был скопирован в папку c:\tmp\.

>mysql -u root -p classicmodels < c:\tmp\db.sql

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

Запуск базы данных MariaDB

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

# systemctl status mariadb
? mariadb.service - MariaDB database server
 Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
 Active: inactive (dead)

Запустите сервер MySQL с помощью systemctl, как показано ниже.

# systemctl start mariadb

Проверьте состояние systemctl, чтобы убедиться, что сервер базы данных MariaDB запущен успешно.

# systemctl status mariadb
● mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)                                                                 
  Drop-In: /etc/systemd/system/mariadb.service.d                                                                                                              
           └─nofile.conf                                                                                                                                      
   Active: active (running) since Tue 2017-10-03 13:56:53 MSK; 1 months 7 days ago
 Main PID: 840 (mysqld_safe)                                                                                                                                  
   CGroup: /system.slice/mariadb.service                                                                                                                      
           ├─ 840 /bin/sh /usr/bin/mysqld_safe --basedir=/usr                                                                                                 
           └─1121 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log...

Если вы программист, и используете PHP, вы найдете это полезным: 3 метода подключения к MySQL с помощью PHP с примерами кода

Cookbook

After installing MariaDB system-wide the first thing you’ve got used to doing is logging in into the unprotected root account and protecting it, that is, setting the root password:

$ sudo dnf install MariaDB-server
$ mysql -uroot
...
MariaDB> set password = password("XH4VmT3_jt");

This is not only unnecessary now, it will simply not work — there is no unprotected root account. To login as root use

$ sudo dnf install MariaDB-server
$ sudo mysql

Note that it implies you are connecting via the unix socket, not tcp. If you happen to have in a system-wide file, use .

After installing MariaDB locally you’ve also used to connect to the unprotected root account using . This will not work either, simply use without specifying a username.

If you’ve forgotten your root password, no problem — you can still connect using sudo and change the password. And if you’ve also removed unix_socket authentication, to restore access do as follows:

  • restart MariaDB with
  • login into the unprotected server
  • run FLUSH PRIVILEGES (note, before 10.4 this would’ve been the last step, not anymore). This disables and allows you to change the stored authentication method
  • run SET PASSWORD FOR root@localhost to change the root password.

To view inside privilege tables, the old mysql.user table still exists. You can select from it as before, although you cannot update it anymore. It doesn’t show alternative authentication plugins and this was one of the reasons for switching to the mysql.global_priv table — complex authentication rules did not fit into rigid structure of a relational table. You can select from the new table, for example:

select concat(user, '@', host, ' => ', json_detailed(priv)) from mysql.global_priv;

Добавление базы в MariaDB

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

Добавление базы с параметрами

MariаDB > CREATE DATABASE `base` CHARACTER SET utf8 COLLATE utf8_general_ci;
= вывод команды =
Query OK, 1 row affected (0.00 sec)

Просмотр пользователей с выводом их прав

MariaDB > SELECT User,Host FROM mysql.user;
= вывод команды =
+--------+-----------+
| User   | Host      |
+--------+-----------+
| root   | localhost         |
| mysql  | localhost |
+--------+-----------+
2 rows in set (0.005 sec)

Права пользователя баз данных MariaDB

В случае необходимости подключатся к базе с других компьютеров необходимо создать пользователя с нужным параметром и дать права на доступ в настройках сервера MariaDB!

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

  1. Параметр bind-address=0.0.0.0 в конфигурационном файле самого сервера баз MariaDB разрешающий подключатся с любого адреса (или укажите конкретный IP) в разделе  ;
  2. Права пользователя на возможность удаленного подключения к базе данных.

Для работы с базами мне удобно использовать и эта программа позволяет настроить доступ к базам работающих на разных серверах.

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

MariaDB > GRANT ALL PRIVILEGES ON *.* to 'имя пользователя'@'%';

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

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

mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.4.8-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB > CREATE USER `sevo44`@`%` IDENTIFIED BY 'ПАРОЛЬ';
Query OK, 0 rows affected (0.008 sec)

MariaDB > GRANT ALL PRIVILEGES ON *.* to 'sevo44'@'%';
Query OK, 0 rows affected (0.017 sec)

MariaDB > FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

MariaDB > exit
Bye

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

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

# Команда смены прав доступа пользователя на подключение с любого адреса (параметр %)
MariaDB > UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='имя_пользователя';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

# Команда смены прав доступа на базы
MariaDB > UPDATE mysql.db SET Host='%' WHERE Host='localhost' AND User='имя_пользователя';
Query OK, 0 rows affected (0.03 sec)
Rows matched: 0 Changed: 0 Warnings: 0

Добавление пользователя

# Права на доступ только с localhost
MariаDB > CREATE USER `base_user`@localhost IDENTIFIED BY 'ПАРОЛЬ';

# Права на доступ с любого адреса (при использовании знаков в названиях код заключается в кавычки! 
MariаDB > CREATE USER `base_user`@`%` IDENTIFIED BY 'ПАРОЛЬ';

# Права на доступ с адреса 10.10.0.2 (при использовании знаков в названиях код заключается в кавычки!
MariаDB > CREATE USER `base_user`@`10.10.0.2` IDENTIFIED BY 'ПАРОЛЬ';

= правильный вывод команды для любой команды =
Query OK, 0 rows affected (0.10 sec)

Назначение пользователя базе

# При назначении прав выставляем пользователя с нужными правами!
MariaDB > GRANT ALL PRIVILEGES ON base.* to base_user@localhost;
= вывод команды =
Query OK, 0 rows affected (0.04 sec)

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

MariаDB > FLUSH PRIVILEGES;
= вывод команды =
Query OK, 0 rows affected (0.02 sec)

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

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

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

mysql -uroot -p

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

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

cd «%ProgramFiles%\MySQL\MySQL Server 5.5\bin\»

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

mysql -u root -p

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

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

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

> GRANT ALL PRIVILEGES ON newdb.* TO dbuser@localhost IDENTIFIED BY ‘password’ WITH GRANT OPTION;

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

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

> SELECT db, host, user FROM mysql.db WHERE db=’newdb’;

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

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

> SET PASSWORD FOR ‘dbuser’@’localhost’ = PASSWORD(‘new_password’);

> ALTER USER ‘dbuser’@’localhost’ IDENTIFIED BY ‘new_password’;

> UPDATE mysql.user SET Password=PASSWORD(‘new_password’) WHERE USER=’dbuser’ AND Host=’localhost’;

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

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

> REVOKE ALL PRIVILEGES, GRANT OPTION FROM ‘dbuser’@’localhost’;

> DROP USER ‘dbuser’@’localhost’;

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

Создание таблицы с Primary и Foreign ключами

Перед тем как всё-таки перейдём к созданию таблицы, нужно ознакомиться с двумя фундаментальными концепциями реляционных баз данных, это primary и foreign ключи.

Ключ primary (главный) содержит значение, которое индивидуально определяет каждый ряд или запись в таблице. А foreign (буквально «внешний») используется для создания связи между данными в двух таблицах, и контролирования данных, которые могут сохраняться в таблице, где размещён foreign ключ. Обычно для primary и foreign ключей выбирают тип INT.

Для иллюстрации, давайте воспользуемся BookstoreDB и создадим две таблицы с именами AuthorsTBL и BooksTBL как показано ниже. Константа NOT NULL означает, что данное поле требует значение и не может быть NULL (не заданным).

Также AUTO_INCREMENT используется для автоматического увеличения на один значения ключа колонки primary каждый раз, когда в таблицу добавляется новая запись.

Если сейчас мы начнём вводить данные, СУБД не будет знать, для какой базы данных они предназначаются. На сервере может быть множество БД – в какой из них пользователь создаёт таблицы? Чтобы разрешить эту неопределённость используется команда USE, после которой указывается имя базы данных, с который вы собираетесь работать:

USE BookstoreDB;

Посмотрите на изменившееся приглашение командной строки:

Теперь все введённые команды и данные будут относиться к БД BookstoreDB.

Скопируйте целиком и вставьте следующие команды в приглашение командной строки:

CREATE TABLE AuthorsTBL (
	AuthorID INT NOT NULL AUTO_INCREMENT,
	AuthorName VARCHAR(100),
	PRIMARY KEY(AuthorID)
);
CREATE TABLE BooksTBL (
	BookID INT NOT NULL AUTO_INCREMENT,
	BookName VARCHAR(100) NOT NULL,
	AuthorID INT NOT NULL,
	BookPrice DECIMAL(6,2) NOT NULL,
	BookLastUpdated TIMESTAMP,
	BookIsAvailable BOOLEAN,
	PRIMARY KEY(BookID),
	FOREIGN KEY (AuthorID) REFERENCES AuthorsTBL(AuthorID)
);

Как видим, команда создания таблицы имеет вид

CREATE TABLE имя_таблицы (
	имя_колонки1 ТИП ДАННЫХ,
	имя_колонки2 ТИП ДАННЫХ
);

Команду можно было вводить построчно или скопировать и вставить за один раз. При построчном вводе СУБД в качестве окончания вводимой команды ожидает точки с запятой (;). Также команду можно было записать в одну строку, например:

CREATE TABLE имя_таблицы (имя_колонки1 ТИП ДАННЫХ, имя_колонки2 ТИП ДАННЫХ);

Никакой разницы нет.

Теперь мы может продолжить и начать вводить данные в AuthorsTBL и BooksTBL.

Шаг 1 — Определяем версию системы управления базой данных

Найдите, в какой папке у вас расположен файл mysqld.exe. При установке по данной инструкции, этот файл расположен в папке C:\Server\bin\mysql-8.0\bin\.

Откройте командную строку. Нам понадобятся права администратора, поэтому делаем следующее: нажмите Win+x и там выберите Windows PowerShell (администратор):

Теперь перейдите в командной строке в директорию с файлом mysqld.exe, для этого используйте команду вида:

cd путь\до\папки

Например, у меня это папка C:\Server\bin\mysql-8.0\bin\, тогда команда такая:

cd C:\Server\bin\mysql-8.0\bin\

Нужно определить версию MySQL/MariaDB, для этого выполните команду:

.\mysql --version

Пример вывода:

C:\Server\bin\mysql-8.0\bin\mysqld.exe Ver 8.0.19 for Win64 on x86_64 (MySQL Community Server - GPL)

Как удалить или переместить учетную запись пользователя в базе данных MySQL или MariaDB в Linux или Unix-подобной системе

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

Шаг 1 – Шаги по удалению пользователя MySQL/MariaDB

Если вы решили удалить приложение с открытым исходным кодом, такое как WordPress или Drupal, вам нужно удалить эту учетную запись пользователя. Вам нужно удалить все разрешения / свойства и удалить пользователя из таблицы MySQL. Сначала войдите в систему как пользователь MySQL mysql на сервер MySQL / MariaDB, используя оболочку, запустите:

$ mysql -u root -p mysql

ИЛИ

$ mysql -u root -h server-name-here -p mysql

Примеры возможных выводов данных:

Рисунок 01: Оболочка MySQL/MariaDB

Шаг 2 –Перечислите всех mysql пользователей

Когда у вас есть приглашение MySQL или MariaDB, которое выглядит почти точно также, как и на рисунке 1, введите следующую команду в приглашении mysql> или mariadb>, чтобы просмотреть список пользователей MySQL / MariaDB

mariadb> SELECT User,Host FROM mysql.user;

Примеры возможных выводов данных:

Рисунок 02: Как просмотреть/получить список учетных записей пользователей MySQL / MariaDB

В данном примере, мне нужно удалить mysql пользователя с именем ‘bloguser’@’localhost’ .

Шаг 3 – Список свойств для пользователя mysql

Для того, чтобы посмотреть какими свойствами обладает bloguser, введите:

mariadb> SHOW GRANTS FOR 'bloguser'@'localhost';

Примеры возможных выводов данных:

Рисунок 03: Вывод на экран пользовательских свойств

Где,

  1. bloguser – Mysql/Maridb имя пользователя
  2. localhost – Mysql/Mariadb имя хоста
  3. mywpblog – имя базы данных

Шаг 4 – Отменить все свойства для пользователя mysql

Введите следующую sql команду:

mariadb> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'bloguser'@'localhost';

Примеры возможных выводов данных:

Query OK, 0 rows affected (0.00 sec)

Шаг 5 – Переместить/Удалить пользователя из таблицы пользователей

Введите следующую sql команду:

mariadb> DROP USER 'bloguser'@'localhost';

Примеры возможных выводов данных:

Query OK, 0 rows affected (0.00 sec)

Шаг 6 – Удаление базы данных

Введите следующую команду:

mariadb> DROP DATABASE mywpblog;

Примеры возможных выводов данных:

Query OK, 0 rows affected (0.00 sec)

И, наконец, вы справились. Пользователь MySQL/MariaDB удаляется или перемещается с сервера в Unix или Linux через опцию командной строки.

Это интересно:

  • Установка и настройка Apache, PHP, MySQL, phpMyAdmin на Linux (LAMP)
  • Установка и настройка сервера Apache, PHP, MySQL, phpMyAdmin на Windows 10
  • Установка Adobe Photoshop CS6 на Linux (очень простой способ)

Finding the Defaults File

To enable MariaDB to listen to remote connections, you need to edit your defaults
file. See Configuring MariaDB with my.cnf for more detail.

Common locations for defaults files:

  * /etc/my.cnf                              (*nix/BSD)
  * $MYSQL_HOME/my.cnf                       (*nix/BSD) *Most Notably /etc/mysql/my.cnf
  * SYSCONFDIR/my.cnf                        (*nix/BSD)
  * DATADIR\my.ini                           (Windows)

You can see which defaults files are read and in which order by executing:

shell> mysqld --help --verbose
./sql/mysqld  Ver 10.4.2-MariaDB-valgrind-max-debug for Linux on x86_64 (Source distribution)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Starts the MariaDB database server.

Usage: ./sql/mysqld 

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf 

The last line shows which defaults files are read.

Reverting to the Previous Authentication Method for root@localhost

If you don’t want the user account created by mysql_install_db to use unix_socket authentication by default, then there are a few ways to revert to the previous mysql_native_password authentication method for this user account.

Configuring to Revert to the Previous Authentication Method

One way to revert to the previous mysql_native_password authentication method for the user account is to execute mysql_install_db with a special option. If mysql_install_db is executed while is specified, then it will create the default user accounts using the default behavior of MariaDB 10.3 and before.

This means that the user account will use mysql_native_password authentication by default. There are some other differences as well. See for more information.

For example, the option can be set on the command-line while running mysql_install_db:

mysql_install_db --user=mysql --datadir=/var/lib/mysql --auth-root-authentication-method=normal

The option can also be set in an option file in an supported by mysql_install_db. For example:

auth_root_authentication_method=normal

If the option is set in an option file and if mysql_install_db is executed, then mysql_install_db will read this option from the option file, and it will automatically set this option.

Altering the User Account to Revert to the Previous Authentication Method

If you have already installed MariaDB, and if the user account is already using unix_socket authentication, then you can revert to the old mysql_native_password authentication method for the user account by executing the following:

ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD("verysecret")

Создание пользователя и выдача прав

Рассмотрим два варианта создания учетных записей в СУБД MySQL/MariaDB.

1. С помощью команды GRANT.

Данный метод позволяет одной командой сразу и создать пользователя, и дать ему права. Но, начиная с MySQL 8, она возвращает ошибку — разработчики запретили ее использование и сначала требуется создать пользователя (с помощью ).

Синтаксис:

> GRANT <тип привилегий> ON <объект> TO <пользователь> <дополнительные опции>;

Например, эта команда предоставляет права доступа пользователю и, если его не существует, создает его:

> GRANT ALL PRIVILEGES ON *.* TO ‘dbuser’@’localhost’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;

Описание команды:

ALL PRIVILEGES: предоставляет полные права на использование данных.*.* : права предоставляются на все базы и все таблицы.dbuser: имя учетной записи.localhost: доступ для учетной записи будет предоставлен только с локального компьютера.password: пароль, который будет задан пользователю.WITH GRANT OPTION: будут предоставлены дополнительные права на изменение структуры баз и таблиц.

2. С помощью команды CREATE USER.

Данный метод является универсальным. Он позволяет создать пользователя в системе без каких либо прав. После права назначаются командой GRANT.

Пример создания учетной записи:

> CREATE USER ‘dbuser’@’localhost’ IDENTIFIED BY ‘password’;

После можно задать права командой:

> GRANT ALL PRIVILEGES ON *.* TO ‘dbuser’@’localhost’;

Подключение и проверка сервера MariaDB

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

# mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.52-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB >

Следующая команда базы данных покажет базу данных для MySQL по умолчанию.

MariaDB > show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+

Другие примеры

Рассмотрим часто встречаемые операции по работе с пользователями сервера баз данных.

1. Особые права

Предоставление особых прав пользователю:

> GRANT SELECT, UPDATE ON base1.* TO ‘dbuser’@’localhost’ IDENTIFIED BY ‘password’;

* права на выборку и обновление данных во всех таблицах базы base1 для пользователя dbuser
** список всех возможных прав: all privileges, alter, create, create temporary tables, delete, drop, execute, file, index, insert, lock tables, process, references, reload, replication client, replication slave, select, show databases, shutdown, super, update, usage

2. Удаленное подключение

Разрешение на удаленное подключение и использование базы MySQL:

> GRANT ALL PRIVILEGES ON *.* TO ‘dbuser’@’192.168.0.55’ IDENTIFIED BY ‘password’;

* предоставит права пользователю dbuser, который будет подключаться с компьютера с IP-адресом 192.168.0.55.

Мы можем сделать менее жесткое ограничение, разрешив доступ из подсети (особенно удобно при использовании динамических адресов):

> GRANT ALL PRIVILEGES ON *.* TO ‘dbuser’@’192.168.0.%’ IDENTIFIED BY ‘password’;

* в данном примере мы разрешим подключение для любого узла из сети 192.168.0.0/24.

Или мы можем, вовсе, разрешить водключение с любого хоста (не безопасно):

> GRANT ALL PRIVILEGES ON *.* TO ‘dbuser’@’%’ IDENTIFIED BY ‘password’;

3. Права на резервное копирование

Создание учетной записи MySQL с правами создания резервных копий:

> GRANT SELECT, SHOW VIEW, RELOAD, REPLICATION CLIENT, EVENT, TRIGGER, LOCK TABLES ON *.* TO ‘backup’@’localhost’ IDENTIFIED BY ‘backup’;

4. Права доступа к определенной таблице

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

> GRANT ALL PRIVILEGES ON base1.table1 TO ‘dbuser’@’localhost’ IDENTIFIED BY ‘password’;

* в данном примере предоставлены все права на таблицу table1 в базе base1.

5. Удаление пользователя

Нам может также понадобиться удалить ранее созданного пользователя. Это делается в два этапа:

> REVOKE ALL PRIVILEGES, GRANT OPTION FROM ‘dbuser’@’localhost’;

> DROP USER ‘dbuser’@’localhost’;

* в данном примере мы первой командой отняли все права у пользователя dbuser (localhost) и второй — удалили его.

6. Права на создание других пользователей

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

GRANT CREATE USER ON *.* TO ‘creator’@’localhost’;

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

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

GRANT CREATE USER ON *.* TO ‘creator’@’localhost’ WITH GRANT OPTION;

* обратите внимание, что мы просто добавили WITH GRANT OPTION

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: