- Как создать пользователя mysql
- Коротко о базе данных MySQL
- Создание пользователя
- Как дать права пользователю
- Пользователями с правами root mysql
- Создание пользователя MySQL
- Создание пользователя mysql
- 1. Как создать пользователя MySQL
- 2. Права пользователя MySQL
- 3. Удаление прав пользователя MySQL
- 4. Создание суперпользователя MySQL
- Выводы
- How to create MySQL admin user (superuser) account
- Creating MySQL admin user in MySQL server
- Step 1 – Login to MySQL server
- Step 2 – Create admin user account
- Step 3 – Grant PRIVILEGES to admin user
- Understanding MySQL grants for admin (superuser) account
- Step 4 – Reload all the privileges
- Step 5 – Testing
- Creating secure login file
- Wrapping up
Как создать пользователя mysql
Все современные приложения запрашивают подключение базы данных. Она служит так называемым хранилищем электронной информации. Помимо этого существуют системы управления этими базами. Одной из самых популярных систем на сегодняшний день является MySQL.
Коротко о базе данных MySQL
Представляет собой реляционную СУ базами данных. Создана посредством языков программирования С и С++. Служит прекрасным инструментом для оптимизации работы веб-ресурсов и приложений.
Чтобы новичку было проще понять, что такое база данных, приведет элементарный пример. Пользователю нужно найти изображение в телефоне. Для этого он открывает Галерею. В данном случае картинка – это данные, а Галерея – база данных.
По схожему принципу устроены многие веб-ресурсы, где наличествует подключение форм регистрации и систем оформления заказов. После прохождения регистрации на сайте в базе данных появляется личная информация, переданная пользователем ресурса. Благодаря этому юзер может вернуться на сайт в любой момент и даже отредактировать свои личные данные для входа.
Ведение веб-ресурса без базы данных – весьма трудоёмкий и нерациональный процесс. С помощью БД можно грамотно структурировать информацию и заполучить к ней быстрый доступ.
Чаще всего для администрирования данных пользователи выбирают такие инструменты, как:
Система управления БД MySQL особенно приходится по душе тем, кто любит упорядочивать информацию в табличном виде. Стоит выполнить запрос, и информация извлекается из таблиц. Информация, имеющаяся в таблицах, строго упорядочена. Расположение строк напрямую зависит от данных, размещенных в таблице – при необходимости оно может видоизменяться.
Процесс заполнения таблиц обеспечивает SQL (язык программирования).
Чем может MySQL:
- Быстрый доступ к информации;
- Быстрая обработка информации;
- Надежная защита данных;
- Бесплатное пользование;
- Понятный интерфейс;
- MySQL совместим с ОС Windows и Linux;
- Есть шифрование личных данных (паролей).
А теперь перейдем от теории к практике.
Создание пользователя
Начнем с того этапа, когда БД уже создана. Теперь пользователю необходимо запустить клиент БД. Для этих целей удобнее всего воспользоваться терминалом.
Заходим в косоль mysql от имени root.
ВАЖНО! Если Вы уже залогинлись по root, достаточно ввети команду без параметров — mysql
После этого можно приступать к реализации главной идеи. То есть, добавление нового юзера посредством CREATE USER. Ниже мы распишем синтаксис этой команды.
CREATE USER ‘имя_пользователя’@’хост’ IDENTIFIED BY ‘пароль для пользователя’;
Следуя вышеуказанному синтаксису, юзеру необходимо задать следующую информацию: имя пользователя и тот хост, откуда можно пройти авторизацию. В текущей ситуации указание символа «%» – способ обозначения всех возможных хостов.
Теперь разберем, как создать нового локального юзера через терминал. Просто вводим в строке текст следующего вида:
CREATE USER ‘new_user’@’localhost’ IDENTIFIED BY ‘parol’;
Соответственно, чтобы добавить юзера, доступ к которому появится со всевозможных хостов, нужно поменять в команде «localhost» на «%», как это уже упоминалось ранее.
Теперь зададим команду для просмотра всех добавленных юзеров. Она выглядит следующим образом:
SELECT User,Host FROM mysql.user;
Как дать права пользователю
Далее необходимо позаботиться о том, чтобы для нового юзера MySQL были назначены правильные привилегии. Для этих целей будет применять специальная команда. Она прописывается так:
GRANT привилегии ON база_данных . таблица ТО ‘имя_пользователя’@’хост’;
Какие права назначать пользователю системы – вопрос индивидуальный. Каких-либо чётких рекомендаций здесь быть не может. Единственное, о чем стоит упомянуть, так это о предоставлении всех прав над базой данных. Возможно, кому-то подойдет именно такой вариант. Как это сделать? Рассмотрим ниже.
GRANT ALL PRIVILEGES ON test_database . * TO ‘new_user’@’localhost’;
Чтобы открыть окно с данными о привилегиях пользователя, необходимо выполнить следующее действие:
SHOW GRANTS FOR ‘new_user’@’localhost’;
На этом еще не всё! После выполненных действий крайне важно произвести обновление таблицы прав пользователей. Это делается так:
Пользователями с правами root mysql
Рассмотрим еще один вероятный сценарий развития событий. На тот случай, если кому-нибудь понадобится создать пользователя с правами root MySQL. Потребуется еще раз воспользоваться терминалом для реализации задуманного:
Итак, водим текст такого вида:
GRANT ALL PRIVILEGES ON * . * TO ‘new_user’@’localhost’;
Теперь пользователь имеет все необходимые привилегии. Однако остаётся маленькая загвоздка. Она заключается в отсутствии возможности предоставлять права другим пользователям от имени этого юзера. Текущая проблема может быть решена так:
GRANT ALL PRIVILEGES ON * . * TO ‘new_user’@’localhost’ WITH GRANT OPTION;
Готово! Суперпользователь MySQL добавлен, все необходимые привилегии предоставлены.
Заключение
Инструкция по созданию пользователя MySQL, предоставленная в данном материале, актуальна для Ubuntu и других дистрибутивов Debian, Centos.
Источник
Создание пользователя MySQL
После того, как вы установили и настроили MySQL, вам необходимо создать базы данных, таблицы и пользователей. Конечно, вы можете сделать это от имени суперпользователя root, но это не безопасно. Да и большинство приложений не позволят вам такой вольности, например, Phpmyadmin не даст авториrзоваться от имени суперпользователя.
Поэтому для каждой базы данных нужно создавать отдельных пользователей и настраивать для них права. В этой статье мы рассмотрим, как выполняется создание пользователя mysql, а также настройка его прав.
Создание пользователя mysql
1. Как создать пользователя MySQL
Предположим, что база данных уже создана и называется test_database. Нам нужно открыть клиент базы данных. Для этого наберите в терминале:
Теперь можно работать. Для создания пользователя используется команда CREATE USER, её синтаксис такой:
CREATE USER ‘имя_пользователя’ @ ‘хост’ IDENTIFIED BY ‘пароль’ ;
Кроме имени пользователя, здесь нужно задать хост, с которого может авторизоваться этот пользователь. Здесь может быть доменное имя, IP-адрес, адрес подсети или знак «%», который означает все возможные хосты. Это очень удобно, потому что вы можете создать пользователя, к которому можно будет подключится только локально или настроить отдельно права для локального или удалённого пользователя.
Например, давайте создадим локального пользователя test_user с паролем password:
CREATE USER ‘test_user’@’localhost’ IDENTIFIED BY ‘password’;
Или можно создать пользователя, который будет доступен со всех хостов:
CREATE USER ‘test_user’@’%’ IDENTIFIED BY ‘password’;
Смотрим наших пользователей:
SELECT User,Host FROM mysql.user;
Все пользователи созданы.
2. Права пользователя MySQL
Создать пользователя — это ещё далеко не всё, теперь нужно назначить ему права. Для этого используется команда GRAT. У неё такой синтаксис:
GRANT привилегии ON база_данных . таблица TO ‘ имя_пользователя ‘ @ ‘ хост ‘ ;
Здесь можем дать определённые привилегии для опредёленного пользователя к базе данных или таблице. Если нужно дать права для всех баз данных или таблиц, используйте вместо названия звездочку — «*». Вот основные права пользователя MySQL, которые вы можете использовать:
- ALL PRIVILEGES — все, кроме GRANT;
- USAGE PRIVILEGES — никаких привилегий;
- SELECT — делать выборки из таблиц;
- INSERT — вставлять данные в таблицу;
- UPDATE — обновлять данные в таблице;
- DELETE — удалять данные из таблицы;
- FILE — разрешает читать файлы на сервере;
- CREATE — создавать таблицы или базы данных;
- ALTER — изменять структуру таблиц;
- INDEX — создавать индексы для таблиц;
- DROP — удалять таблицы;
- EVENT — обработка событий;
- TRIGGER — создание триггеров.
Также доступны такие привилегии администрирования баз данных:
- GRANT — изменять права пользователей;
- SUPER — суперпользователь;
- PROCESS — получение информации о состоянии MySQL;
- RELOAD — позволяет перезагружать таблицы привилегий;
- SHUTDOWN — позволяет отключать или перезапускать базу данных;
- SHOW DATABASES — просмотр списка баз данных;
- LOCK TABLES — блокирование таблиц при использовании SELECT;
- REFERENCES — создание внешних ключей для связывания таблиц;
- CREATE USER — создание пользователей;
Чтобы дать права пользователю MySQL на обновление и добавление записей для базы данных test_database, выполните:
GRANT SELECT,UPDATE,INSERT ON test_database . * TO ‘test_user’@’localhost’;
Дальше дадим этому же пользователю все права над этой базой данных:
GRANT ALL PRIVILEGES ON test_database . * TO ‘test_user’@’localhost’;
Теперь посмотрим привилегии нашего пользователя:
SHOW GRANTS FOR ‘test_user’@’localhost’;
Мы видим, что для всех баз данных и таблиц привелегий нет, но зато есть все привилегии для базы данных test_database. Вот так это работает. После обновления прав пользователя необходимо обновить таблицу прав пользователей MySQL в памяти. Для этого выполните:
3. Удаление прав пользователя MySQL
Чтобы отозвать права у пользователя MySQL, используйте команду REVOKE вместо GRANT. Её синтаксис похож на GRANT:
REVOKE привилегии ON база_данных . таблица FROM ‘ имя_пользователя ‘ @ ‘ хост ‘ ;
Например, заберём все права на базу данных test_database у нашего пользователя:
REVOKE ALL PRIVILEGES ON test_database . * FROM ‘test_user’@’localhost’;
4. Создание суперпользователя MySQL
Если вам необходимо создать пользователя со всеми правами MySQL на замену для root, то можно использовать такую конструкцию:
GRANT ALL PRIVILEGES ON * . * TO ‘test_user’@’localhost’;
Даём все привилегии для пользователя test_user над всеми базами данными и всеми таблицами. Но наш пользователь не сможет давать права другим пользователям. Чтобы это исправить, нужно дать ему привилегию GRANT, а для этого используется такая команда:
GRANT ALL PRIVILEGES ON * . * TO ‘test_user’@’localhost’ WITH GRANT OPTION;
Теперь этот пользователь является суперпользователем для MySQL и, авторизовавшись от его имени в PhpMyAdmin, вы можете делать всё то же самое, что и с помощью root.
Выводы
В этой статье мы рассмотрели, как создать пользователя MySQL в Ubuntu или в любом другом дистрибутиве. Работа в командной строке с MySQL может показаться довольно сложной. Но сделать это надо всего один раз -после установки базы данных. А дальше можно выполнять все действия в Phpmyadmin.
Источник
How to create MySQL admin user (superuser) account
H ow do I create an admin user in MySQL? How can I set up and create a superuser account in a MySQL server running on Linux or Unix-like systems? Can you provide a quick guide about making a superuser with root-like access to the MySQL or MariaDB databases?
Both MySQL and MariaDB (drop-in replacement for Oracle MySQL) are free and open-source database systems to build dynamic applications running on Linux, *BSD, and Unix-like systems. Typically we use PHP, Perl, Python, Java, and other server-side programming languages with MySQL server. This page explains how to create a MySQL admin user (superuser) account using your Linux or Unix shell. The commands also work on the MariaDB server.
Tutorial details | |
---|---|
Difficulty level | Intermediate |
Root privileges | Yes |
Requirements | MySQL 8.x or MariaDB 10.4+ |
Est. reading time | 6 mintues |
Creating MySQL admin user in MySQL server
The steps to create a new user in MySQL and make it a superuser/admin are as follows:
Step 1 – Login to MySQL server
The syntax is:
$ mysql -u root -p
$ mysql -h host_name_ip -u root -p
Step 2 – Create admin user account
Run the following command at mysql> prompt:
Warning : For security reasons, you should not use % as this allows access to everyone. I strongly recommend restricting access to localhost or sysadmin/developers CIDR (Classless inter-domain routing) hidden with VLAN and firewalled port.
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
We can create user for network access too for all users. The percent sign, ( % ) means all ip address:
Limit access to 10.147.164.0/24 CIDR (10.147.164.0/255.255.255.0 subnet):
In this example, create a new user called ‘sayali’ and restrict her access to the 192.168.1.0/24 subnet. Further, TLS/SSL is used to protect transmission with an encryption protocol.
In MySQL version 8.x, caching_sha2_password is the default strong authentication plugin rather than mysql_native_password , which was the default in MySQL 5.7. In other words, we can switch back to mysql_native_password plugin for backward compatibility purposes that implement native authentication. We do not recommend to use the mysql_native_password authentication plugin for new installations that require high password security. Say, if an attacker can both listen to the connection protocol and get a copy of the mysql.user table, then the person would be able to use this information to connect to the MariaDB/MySQL server. Hence the following is recommend syntax for MySQL 8.x server:
MariaDB v10.04+ example for ed25519 auth plugin:
Use the following command to list users with their plugins:
Click to enlarge
Step 3 – Grant PRIVILEGES to admin user
The SQL syntax is as follows to grant all privileges on database:
GRANT ALL PRIVILEGES ON *.* TO ‘admin’@’%’;
GRANT ALL PRIVILEGES ON *.* TO ‘vivek’@’10.147.164.0/255.255.255.0’;
The *.* means all databases on MySQL or MariaDB server. For security purposes, you should not set up and grant all permissions for a mysql admin user account with access via the website or any other means. The solution is to grant full permission to the specific database as follows:
# grant full access to proddb for admin user only #
GRANT ALL PRIVILEGES ON proddb.* TO ‘admin’@’%’;
# Give vivek admin access to blogdb only #
GRANT ALL PRIVILEGES ON blogdb.* TO ‘vivek’@’10.147.164.0/255.255.255.0’;
The blogdb.* means all tables of blogdb MySQL/MariaDB database.
Understanding MySQL grants for admin (superuser) account
Here is a list of standard privileges:
- Data USAGE privileges includes: SELECT, INSERT, UPDATE, DELETE, and FILE
- Structure privileges includes: CREATE, ALTER, INDEX, DROP, CREATE TEMPORARY TABLES, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE, CREATE VIEW, EVENT, and TRIGGER
- Administration privileges includes: GRANT, SUPER, PROCESS, RELOAD, SHUTDOWN, SHOW DATABASES, LOCK TABLES, REFERENCES, REPLICATION CLIENT, REPLICATION SLAVE, and CREATE USER
- SSL privileges includes: REQUIRE NONE, REQUIRE SSL, REQUIRE X509
- ALL PRIVILEGES : Shortcut to grants all privileges to a mysql user account.
We can list user GRANTS as follows:
Here is what you will see from the last SQL:
Step 4 – Reload all the privileges
Now we set up a new user MySQL admin account with the required password. It is time to reload changes:
FLUSH PRIVILEGES;
Step 5 – Testing
From the client machine run:
$ mysql -u admin -h 10.147.164.6 -p db_name
$ mysql -u vivek -h 192.168.1.100 -p
# if you set TLS/SSL requirements, give CA file in PEM format #
$ mysql —ssl-ca=/path/to/our.tls.pem —ssl-mode=VERIFY_CA -u vivek -h 192.168.1.100 -p
Where,
- —ssl-ca=/path/to/our.tls.pem : CA file bundle in PEM format.
- —ssl-mode=VERIFY_CA : TLS/SSL connection mode. PEM certificates are only validated for VERIFY_CA and VERIFY_FULL SSL mode values.
- -u vivek : Admin user name created in step #1.
- -h 192.168.1.100 : MySQL server IP address.
- -p : Prompt for MySQL server password.
- db_name : State database name
Creating secure login file
The mysql_config_editor command allows us to store authentication credentials in a secure encrypted format in a confused login path file named $HOME/.mylogin.cnf. The file is not readable for human eyes. Hence it is called a confusing format. The syntax is:
$ mysql_config_editor set \
—login-path=remote \
—host=10.147.164.6 \
—port=3306 \
—user=admin \
—password
State TLS/SSL pem file in your
/.my.cnf file too if encryption enabled for admin account:
$ vim
/.my.cnf
Append/modify as follows:
Verify it:
$ ls -l $HOME/.mylogin.cnf
$ file $HOME/.mylogin.cnf
$ cat $HOME/.mylogin.cnf
Print it:
$ mysql_config_editor print —all
Now all you have to do is type the following command to login as admin user:
$ mysql —login-path=remote
Please note that MariaDB doesn’t support mysql_config_editor feature. MariaDB users need to store info in the
/.my.cnf itself, which is not secure enough as your admin password stored in a plain text format:
Wrapping up
This quick tutorial explained how to securely create admin (superuser) on MySQL or MariaDB server using the CLI and grant additional permissions as per your requirements. We further explained how to store the password securely in
/.mylogin.cnf and TLS paths in
/.my.cnf file for ease of login. If you wish to drop admin user, try:
DROP USER `user`@`host`;
To remove PRIVILEGES run:
REVOKE ALL PRIVILEGES ON *.* FROM `user`@`%`;
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Category | List of Unix and Linux commands |
---|---|
Documentation | help • mandb • man • pinfo |
Disk space analyzers | df • duf • ncdu • pydf |
File Management | cat • cp • less • mkdir • more • tree |
Firewall | Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04 |
Linux Desktop Apps | Skype • Spotify • VLC 3 |
Modern utilities | bat • exa |
Network Utilities | NetHogs • dig • host • ip • nmap |
OpenVPN | CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04 |
Package Manager | apk • apt |
Processes Management | bg • chroot • cron • disown • fg • glances • gtop • jobs • killall • kill • pidof • pstree • pwdx • time • vtop |
Searching | ag • grep • whereis • which |
Shell builtins | compgen • echo • printf |
Text processing | cut • rev |
User Information | groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w |
WireGuard VPN | Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04 |
Comments on this entry are closed.
Excellent tutorial. Just what the doctor ordered.
Источник