- Введение
- Что означает выделенный текст
- Создание нового пользователя
- Предоставление пользователю различных прав
- Introduction
- Prerequisites
- Creating a New User
- Granting a User Permissions
- Выдача привилегий
- Заключение
- Создание базы данных
- Удаление базы данных
- Создание пользователя
- Удаление учётной записи
- Выдача привилегий
- Отзыв привилегий
- Ключевые команды, которые нужно знать
- How to Grant Permissions in MySQL
- MySQL User Management
- How to List MySQL User Account-Privileges
- How to Grant All Privileges on a Database in MySQL
- Revoke Privileges MySQL User Account
- Remove an Entire User Account
- MySQL CREATE USER syntax
- MySQL CREATE USER example
Введение
MySQL — это программное обеспечение для управления базами данных с открытым исходным кодом, которое помогает пользователям хранить, организовывать и в будущем получать данные. MySQL обладает множеством возможностей предоставления конкретным пользователям детализированных прав для работы с таблицами и базами данных. В этом руководстве мы кратко расскажем о ряде из этих возможностей.
Что означает выделенный текст
В этом руководстве любые строки, которые пользователь должен ввести или изменить, будут выделены цветом! Весь остальной текст можно просто скопировать и вставить.
Создание нового пользователя
В части 1 руководства по работе с MySQL мы воспользовались всеми возможностями для редактирования в MySQL с помощью пользователя с правами root, обладающего полным доступом ко всем базам данных. Однако для тех случаев, когда нам могут потребоваться дополнительные ограничения, существует возможность создания пользователей с настраиваемыми правами.
Давайте начнем с создания нового пользователя внутри оболочки MySQL:
- ">CREATE @ IDENTIFIED BY
Таким образом, первое, что необходимо сделать, — это предоставить пользователю доступ к необходимой ему информации.
- ">GRANT ALL PRIVILEGES ON * * TO @
Звездочки в этой команде обозначают базу данных и таблицу (соответственно), к которым пользователь может получить доступ. Эта конкретная команда позволяет пользователю читать, редактировать, запускать и выполнять любые задачи для всех баз данных и таблиц.
После того как вы определились с правами, которые вы хотите предоставить вашему новому пользователю, необходимо будет во всех случаях перезагрузить все привилегии.
- ">FLUSH PRIVILEGES
После этого внесенные вами изменения вступят в силу.
Предоставление пользователю различных прав
Ниже представлен короткий список других часто используемых прав, которые могут предоставляться пользователям.
- ALL PRIVILEGES — как мы уже увидели ранее, данный набор прав предоставляет пользователю MySQL полный доступ к определенной базе данных (если не выбрана ни одна база данных, предоставляется глобальный доступ к системе)
- CREATE — позволяет пользователю создавать новые таблицы или базы данных
- DROP — позволяет пользователю удалять таблицы или базы данных
- DELETE — позволяет пользователю удалять строки из таблиц
- INSERT — позволяет пользователю вставлять строки в таблицы
- SELECT — позволяет пользователю выполнять команду
SELECTдля чтения данных из базы - UPDATE — позволяет пользователю обновлять строки таблицы
- GRANT OPTION — позволяет пользователю предоставлять или отзывать права других пользователей
Чтобы предоставить конкретному пользователю какое-либо право, вы можете использовать следующую структуру команды:
- ">GRANT type_of_permission ON database_name.table_name TO @
Если вы хотите предоставить пользователю доступ к любой базе данных или любой таблице, необходимо поместить звездочку (*) на место имени базы данных или имени таблицы.
При каждом обновлении или изменении права необходимо использовать команду сброса привилегий.
Если вам требуется отозвать какое-либо право, структура команды будет практически идентична структуре команды, используемой для предоставления права:
- ">REVOKE type_of_permission ON database_name.table_name FROM @
Обратите внимание, что при отзыве прав синтаксис требует использования элемента FROM вместо элемента TO, который мы использовали при предоставлении прав.
Вы можете просмотреть текущие права пользователя с помощью следующей команды:
- ">SHOW GRANTS FOR @
Так же как вы можете удалять базы данных с помощью DROP, вы можете использовать DROP для полного удаления пользователя:
- ">DROP @
Чтобы протестировать вашего нового пользователя, выполните выход, введя следующую команду:
- ">quit
а затем войдите снова, введя следующую команду в терминале:
- mysql username
Introduction
MySQL is an open-source relational database management system. It is commonly deployed as part of the LAMP stack (which stands for Linux, Apache, MySQL, and PHP) and, as of this writing, is the most popular open-source database in the world.
Prerequisites
You could alternatively spin up a MySQL database managed by a cloud provider. For details on how to spin up a DigitalOcean Managed Database, see our product documentation.
Please note that any portions of example commands that you need to change or customize will be highlighted like this throughout this guide.
Creating a New User
- mysql
- mysql root
- ">CREATE @ IDENTIFIED WITH authentication_plugin BY
- ">CREATE @ IDENTIFIED BY
- ">CREATE @ IDENTIFIED WITH mysql_native_password BY
- ">ALTER @ IDENTIFIED WITH mysql_native_password BY
Granting a User Permissions
- ">GRANT PRIVILEGE ON database.table TO @
You can find the full list of available privileges in the official MySQL documentation.
- ">GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO @ WITH GRANT OPTION
- ">GRANT ALL PRIVILEGES ON *.* TO @ WITH GRANT OPTION
- ">FLUSH PRIVILEGES
However, according to the official MySQL documentation, when you modify the grant tables indirectly with an account management statement like GRANT, the database will reload the grant tables immediately into memory, meaning that the FLUSH PRIVILEGES command isn’t necessary in our case. On the other hand, running it won’t have any negative effect on the system.
If you need to revoke a permission, the structure is almost identical to granting it:
- ">REVOKE type_of_permission ON database_name.table_name FROM @
Note that when revoking permissions, the syntax requires that you use FROM, instead of TO which you used when granting the permissions.
- ">SHOW GRANTS FOR @
- ">DROP @
- ">
- mysql sammy
Создание нового пользователя и раздача прав в MySQL
В этой статье мы с вами разберём предоставление прав доступа различного уровня третьим лицам. Создание пользователя в MySQL начинает работу, ведь без создания юзерских аккаунтов сделать нельзя решительно ничего. Также рассмотрим предоставление права доступа к созданным таблицам, без хорошего понимания которых работа с облачными сервисами вроде cloud.timeweb.com будет совершенно невозможна.
Чтобы добавить пользователя в MySQL необходимо изначально иметь привилегии на создание пользователей. Синтаксис запроса выглядит так:
- [IF NOT EXISTS] – если пользователь существует, то команда остановит выполнение. Необязательный параметр.
- User – имя учетной записи. Состоит из имени пользователя и имени хоста. (‘user_name‘@’host_name‘). Часть ‘host_name‘ является не обязательной (задает хост, с которого можно будет подключиться с данным именем, % — означает все возможные хосты). Если мы хотим в MySQL создать пользователя для удалённого подключения, то можно указать доменное имя, IP-адрес или адрес подсети. Имя учетной записи, состоящей только из имени пользователя, можно записать так: ‘user_name‘@’%‘ – такая учетная запись будет доступна с любого хоста. Кроме того, можно создать анонимного пользователя: »@’localhost’.
- [auth_option] – необязательное значение, указывает, как учетная запись проходит аутентификацию (пароль, свойства блокировки и т.д.).
- DEFAULT ROLE – задает роль пользователя.
- REQUIRE {NONE | tls_option [[AND] tls_option] …} – если указано, то проверяет сертификат X.509 в дополнении к обычной аутентификации.
- WITH – если указано, позволяет установить ограничение на использование ресурсов сервера. Например, ограничить кол-во запросов, обновлений или подключений к серверу.
- password_option – параметры управления паролями (необязательный параметр). Например, срок действия, ограничение повторного использования, отслеживание неудачных попыток входа.
- COMMENT…| ATTRIBUTE – добавление пользовательских комментариев или атрибутов в формате json (нельзя использовать одновременно). Необязательный параметр.
Выдача привилегий
Создать пользователя и дать права на базу в MySQL – первое, что вы делаете, начиная работу. Чтобы выдать привилегии или назначить роль (роль – это именованный набор привилегий) используется оператор GRANT. Одновременно выдать и то, и другое нельзя. Чтобы выдавать привилегии, необходимо самому иметь эти привилегии.
Синтаксис для определения роли учетной записи:
- role – роль, которую предоставляем.
- user_or_role – имя учетной записи или роль.
- WITH ADMIN OPTION – если указано, то с учетной записи, которой предоставили роль, можно будет также выдать эту роль кому-то ещё. Пример:
GRANT 'role1', 'role2' TO 'user1'@'localhost', 'user2'@'localhost';Синтаксис для добавления привилегий:
- priv_type – тип привилегий. Их много. Например, привилегии для создания таблиц, их обновления, заполнения или удаления; для создания ролей, пользователей, индексов; привилегии администрирования резервного копирования и учетных записей без паролей и много-много всего еще.
- object_type – если указано, задает тип следующего объекта (может быть TABLE, FUNCTION или PROCEDURE).
- priv_level – задает уровень привилегий.
Привилегии могут быть:
- глобальные – например, на создание пользователей. Применяются ко всем базам на сервере. Синтаксис: ON *.*
- баз данных – применяются ко всем объектам в указанной базе данных. Применяются для создания или удаления таблиц. Пример:
- таблиц – применяются ко всем столбцам в таблице. Применяется вставка или обновление записей. Пример:
- столбцов – применяется к определенным столбцам (вставка, просмотр, обновление данных). В примере за привилегией следует название столбца в круглых скобках:
Также есть привилегии подпрограмм и прокси-пользователей.
Если предоставить учетной записи все привилегии, то можно создать «суперпользователя»:
Для того чтобы отозвать роли или привилегии учетной записи, используется REVOKE.
Мы отозвали у пользователя привилегию вставки данных в таблицы на глобальном уровне.
Чтобы удалить пользователя, используется DROP:
Заключение
Итак, мы рассмотрели, как создать пользователя и выдать ему необходимые права (привилегии). Владея этими знаниями вы сможете уверенно работать с базами, создавать новых юзеров, распределять права и возможности при работе.
Как создать базу данных и нового пользователя в MySQL: инструкция
В этой инструкции мы рассмотрим, как в MySQL создать пользователя и базу, как удалить базу, как выдать пользователям привилегии.
По умолчанию вам будет доступен пользователь root. Используйте его, чтобы выполнить первоначальную настройку: создать первую БД и других пользователей.
Приведенные команды подойдут для управления MySQL, развернутой на сервере. Если же вы пользуетесь облачной базой данных, пользователь и сама база будут созданы автоматически при создании БД в панели управления.
Создание базы данных
Подключитесь к MySQL под учётной записью root:
mysql -u root -pПосмотрите, какие базы уже хранятся на сервере:
Даже если вы ещё ничего не делали, таблица не будет пустой. В ней отобразятся служебные БД. Удалять их не нужно.
создать базу данных MySQL
CREATE DATABASE my_timeweb;Вместо my_timeweb укажите имя, которое необходимо задать новой БД.
Чтобы убедиться, что новая база появилась на сервере, ещё раз выполните:
В таблице отобразится название БД, которую вы только что создали.
Нельзя, чтобы у двух и более БД были одинаковые имена. Если ещё раз создать базу my_timeweb, то появится сообщение об ошибке с кодом 1007.
Чтобы предотвратить появление ошибки, можно в MySQL создать новую базу с помощью расширенного синтаксиса:
CREATE DATABASE IF NOT EXISTS my_timeweb;В этом случае СУБД проверит условие. Если БД с таким именем не существует, то MySQL создаст её. Если же такая база была создана ранее, то ничего не изменится.
Удаление базы данных
Для удаления выполните:
DROP DATABASE my_timeweb;Вместо my_timeweb укажите имя БД, которую следует удалить.
У DROP DATABASE также есть расширенный синтаксис, который помогает избежать ошибок:
DROP DATABASE IF EXISTS my_timeweb;Запрос будет выполнен только при наличии БД с таким именем.
DROP DATABASE удалит БД и связанные с ней данные. Интерфейс командной строки MySQL не предложит вам подтвердить действие. Поэтому применяйте DROP DATABASE с осторожностью.
Создание пользователя
MySQL предлагает удобную систему управления юзерами и их привилегиями. Можно менять права доступа, разрешать и запрещать выполнение действий на сервере.
MySQL создать пользователя, авторизуйтесь как root и выполните в консоли:
Если нужно указать не конкретный хост, а целый пул, используйте знак %. Например:
Чтобы посмотреть список учетных записей, выполните:
Удаление учётной записи
Будьте осторожны, команда выполняется без дополнительного подтверждения.
Выдача привилегий
Без привилегий пользователь может подключиться к серверу MySQL, но не может работать с данными и выполнять другие действия.
В этой таблице — привилегии, которые часто выдают пользователям. Более подробный список смотрите в
Для выдачи прав нужно выполнить команду GRANT. Например:
Чтобы выдать пользователю все права, кроме тех, что есть у root, выполните:
Отзыв привилегий
Чтобы отозвать привилегии, используйте команду REVOKE. У неё такой же синтаксис, как у GRANT. Но результат будет противоположным.
Если учётная запись не имела никаких прав в этой БД, то ничего не изменится.
Ключевые команды, которые нужно знать
Как создать БД в MySQL:
Как удалить БД:
создать нового пользователя MySQL:
Как удалить пользователя:
Это минимальный набор запросов, который поможет в MySQL создать базу данных и пользователя. Особенности использования этих и других возможностей СУБД подробно описаны в
- A Linux server with MySQL or MariaDB installed and running
- Access to the MySQL root user credentials
- Access to a terminal window/command-line (Ctrl-Alt-T / Ctrl-Alt-F2)
sudo mysql –u root –p2. Type in the root password for this account and press Enter.
The prompt should change to show that you are in the mysql> shell.
CREATE USER 'username' IDENTIFIED BY 'password';- If you are working on the machine with MySQL, use username@localhost to define the user.
- If you are connecting remotely, use username@ip_address, and replace ip_address with the actual address of the remote system hosting MySQL.
Therefore, the command will be:
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';CREATE USER 'username'@'ip_address' IDENTIFIED BY 'password';CREATE USER 'username'@'%' IDENTIFIED BY 'password';How to Grant Permissions in MySQL
- All Privileges: The user account has full access to the database
- Insert: The user can insert rows into tables
- Delete: The user can remove rows from tables
- Create: The user can create entirely new tables and databases
- Drop: The user can drop (remove) entire tables and databases
- Select: The user gets access to the select command, to read the information in the databases
- Update: The user can update table rows
- Grant Option: The user can modify other user account privileges
GRANT permission_type ON database.table TO 'username'@'localhost';GRANT INSERT ON *.* TO 'username'@'localhost';You can replace the privilege level according to your needs. Run the command for each privilege you wish to grant.
GRANT INSERT *database_name.table_name* TO 'username'@'localhost';MySQL User Management
How to List MySQL User Account-Privileges
SHOW GRANTS FOR username;How to Grant All Privileges on a Database in MySQL
GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';Revoke Privileges MySQL User Account
REVOKE permission_type ON database.table TO 'username'@'localhost';Remove an Entire User Account
DROP USER 'username'@'localhost';MySQL CREATE USER syntax
SQL (Structured Query Language) In this syntax:
SQL (Structured Query Language) An account name without a hostname is equivalent to:
SQL (Structured Query Language) SQL (Structured Query Language) Besides the single quote ('), you can use backticks ( `) or double quotation mark ( ").
MySQL CREATE USER example
First, connect to the MySQL Server using the mysql client tool:
mysql -u root -p SQL (Structured Query Language) Enter the password for the root account and press Enter:
Enter password: ******** SQL (Structured Query Language) SQL (Structured Query Language) Here is the output:
SQL (Structured Query Language) SQL (Structured Query Language) The output will be:
Fifth, open a second session and log in to the MySQL as bob:
mysql -u bob -p SQL (Structured Query Language) Input the password for bob and press Enter:
Enter password: ******** SQL (Structured Query Language) Sixth, show the databases that bob has access:
mysql> ; SQL (Structured Query Language) Here is the list of databases that bob can access:
mysql> bobdb; SQL (Structured Query Language) Eight, select the database bobdb:
mysql> bobdb; SQL (Structured Query Language) Ninth, create a new table called lists:
mysql> lists(
-> auto_increment primary ,
-> todo () ,
-> completed ); SQL (Structured Query Language) Notice that when you press Enter, instead of showing the mysql> command, the mysql tool shows the -> that accepts new clause of the statement.
Tenth, grant all privileges on the bobdb to bob:
SQL (Structured Query Language) Eleventh, go to the bob’s session and show databases:
mysql> ; SQL (Structured Query Language) Now, bob can see the bobdb:
Twelfth, select the database bobdb:
mysql> bobdb; SQL (Structured Query Language) Thirteenth, show the tables from the bobdb database:
mysql> ; SQL (Structured Query Language) Fourteenth, insert a row into the lists table:
mysql> lists(todo) (); SQL (Structured Query Language) Fifteenth, query data from the lists table:
mysql> * lists; SQL (Structured Query Language) This is the output:
Finally, disconnect from the MySQL Server from both sessions:
SQL (Structured Query Language) Was this tutorial helpful?

