Mysql list users
Содержание:
How to Create a New User
In Part 1 of the MySQL Tutorial, we did all of the editing in MySQL as the root user, with full access to all of the databases. However, in cases where more restrictions may be required, there are ways to create users with custom permissions.
Let’s start by making a new user within the MySQL shell:
Note: When adding users within the MySQL shell in this tutorial, we will specify the user’s host as and not the server’s IP address. is a hostname which means “this computer,” and MySQL treats this particular hostname specially: when a user with that host logs into MySQL it will attempt to connect to the local server by using a Unix socket file. Thus, is typically used when you plan to connect by SSHing into your server or when you’re running the local client to connect to the local MySQL server.
At this point newuser has no permissions to do anything with the databases. In fact, even if newuser tries to login (with the password, password), they will not be able to reach the MySQL shell.
Therefore, the first thing to do is to provide the user with access to the information they will need.
The asterisks in this command refer to the database and table (respectively) that they can access—this specific command allows to the user to read, edit, execute and perform all tasks across all the databases and tables.
Please note that in this example we are granting newuser full root access to everything in our database. While this is helpful for explaining some MySQL concepts, it may be impractical for most use cases and could put your database’s security at high risk.
Once you have finalized the permissions that you want to set up for your new users, always be sure to reload all the privileges.
Your changes will now be in effect.
Introduction to MySQL roles
Typically, you have multiple users with the same set of privileges. Previously, the only way to grant and revoke privileges to multiple users is to change the privileges of each user individually, which is time-consuming.
To make it easier, MySQL provided a new object called role. A role is a named collection of privileges.
Like user accounts, you can grant privileges to roles and revoke privileges from them.
If you want to grant the same set of privileges to multiple users, you follow these steps:
- First, create a new role.
- Second, grant privileges to the role.
- Third, grant the role to the users.
In case you want to change the privileges of the users, you need to change the privileges of the granted role only. The changes will take effect to all users to which the role granted.
Как назначить различные права доступа
Ниже представлен короткий список некоторых возможных вариантов прав доступа, которые могут получить пользователи:
- ALL PRIVILEGES — как мы видели ранее, это даст пользователю MySQL полный доступ к заданной базе данных (если база данных не указана, то ко всем).
- CREATE — позволяет создавать новые таблицы или базы данных.
- DROP — позволяет удалять таблицы или базы данных.
- DELETE — позволяет удалять строки из таблиц.
- INSERT — позволяет добавлять строки в таблицу.
- SELECT — поволит использовать команду Select для чтения из баз данных.
- UPDATE — позволит редактировать строки таблиц.
- GRANT OPTION — позволит назначать или удалять права доступа для других пользователей.
Для назначения прав конкретному пользователю можно использовать следующую схему:
Если вы хотите дать доступ к любой базе данных или к любой таблице, поставьте звездочку () вместо названия базы данных или таблицы.
Каждый раз, когда вы изменяете права доступа, не забудьте использовать команду .
Лишения прав доступа практически идентично их назначению:
По аналогии с использованием команды для удаления базы данных, вы можете использовать эту команду и для удаления пользователя.
Для тестирования учетной записи созданного пользователя, разлогиньтесь с помощью команды:
и залогиньтесь снова, введя в терминате следующую команду:
MySQL REVOKE examples
Let’s take some examples of revoking privileges.
A) Using MySQL to revoke some privileges from a user account example
First, create a user account named rfc@localhost:
Second, grant the , , and privileges on the database:
Third, display the granted privileges of the rfc@localhost user account:
Fourth, revoke the and privileges from :
Fifth, display the privileges of :
B) Using MySQL to revoke all privileges from a user account example
First, grant the privilege to the :
Second, show the currently granted privileges of :
Third, revoke all privileges of the user account by using the statement:
Finally, show the privileges of the to verify the revoke:
The has no privileges. Note that privilege means no privileges in MySQL.
C) Using MySQL to revoke privilege example
First, grant the privilege to user account:
Second, show the granted privileges of :
Third, revoke the privilege from the :
Finally, show the granted privileges of rfc@lcoalhost to verify the revoke:
Conclusion
After completing this tutorial, you should have a sense of how to add new users and grant them a variety of permissions in a MySQL database. From here, you could continue to explore and experiment with different permissions settings for your database, or you may want to learn more about some higher-level MySQL configurations.
For more information about the basics of MySQL, we encourage you to check out the following tutorials:
- How To Create and Manage Databases in MySQL and MariaDB on a Cloud Server
- How To Import and Export Databases and Reset a Root Password in MySQL
- How To Migrate a MySQL Database Between Two Servers
- How To Set Up Master Slave Replication in MySQL
Другие примеры
Рассмотрим часто встречаемые операции по работе с пользователями сервера баз данных.
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.
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) и второй — удалили его.
Предоставление пользовательских привилегий
Здесь приведен короткий список распространенных прав, которые можно передать пользователю.
- ALL PRIVILEGES: как было сказано раньше, такие привилегии разрешают пользователю MySQL полный доступ к указанным базам данных (если база данных не указана, такие привилегии распространяются на всю систему);
- CREATE: позволяет пользователю создавать новые БД или таблицы;
- DROP: позволяет удалять БД или таблицы;
- DELETE: позволяет удалять строки таблиц;
- INSERT: позволяет вносить строки в таблицы:
- SELECT: позволяет использовать команду «Select» для чтения баз данных;
- UPDATE: позволяет обновлять строки таблиц;
- GRANT OPTION: позволяет передавать или ограничивать привилегии других пользователей.
Чтобы передать определенному пользователю определенные привилегии, используйте данный шаблон:
Чтобы открыть доступ ко всем базам данных или таблицам, нужно внести символ звездочки (*) вместо имени БД или таблицы.
Команду Flush Privileges необходимо использовать после каждого обновления или изменения привилегий.
Чтобы аннулировать привилегии, используйте шаблон, очень похожий на предыдущий:
Команда «DROP» может быть использована не только для удаления баз данных, но и для удаления всех пользователей:
Чтобы протестировать ново пользователя, выйдите из системы, набрав:
и войдите снова, введя в терминал команду:
MySQLVPS
Выводы
В этой статье мы рассмотрели, как создать пользователя MySQL в Ubuntu или в любом другом дистрибутиве. Работа в командной строке с MySQL может показаться довольно сложной. Но сделать это надо всего один раз -после установки базы данных. А дальше можно выполнять все действия в Phpmyadmin.
Пользователи MySQL Все пользователи MySQL хранятся в таблице user базы mysql. Чтобы посмотреть список пользователей нужно переключиться на базу mysql и сделать выборку с помощью команды select:
Из списка видно, что в базе имеются учетные данные суперпользователя root с возможностью подключаться только локально с данного сервера(адреса 127.0.0.1, localhost и имя сервера testhost). Еще есть системная учетная запись debian-sys-maint служит для внутренних системных целей СУБД MySQL.
В предыдущей части я рассказывал как настроить в конфигурационном файле /etc/mysql/my.cnfудаленное подключение к серверу баз данных MySQL. Напомню: для этого в параметре bind-address выставляется IP адрес 0.0.0.0 вместо 127.0.0.1, т.е. демон mysqld будет слушать не только локальный интерфейс 127.0.0.1, а все адреса имеющиеся на сервере. В этой части я расскажу как создать пользователя mysql, какие права выдать для различных пользователей, как выставить пароль и хост с которого будет производиться подключение.
Пользователь для веб сайта Обычно различные веб приложения которые хранят информацию в базе mysql требуют создать отдельную учетную запись. Создадим пользователя website-user от имени которого будет работать наше веб приложение. Пользователя можно создать через команду create user, а потом выдать права grant select,insert. но удобнее и быстрее сразу воспользоваться командой grant
Здесь я сразу указал:
- выдать права GRANT SELECT,INSERT,UPDATE,ALTER,DELETE,CREATE,DROP,INDEX (возможно для вашего веб приложения список прав будет иной, обратитесь к документации веб приложения);
- на базу website.* — имя базы указывается по маске (все файлы с названием website). Здесь можно указать *.*, тогда пользователь будет иметь права на все базы;
- ‘websiteuser’@’localhost’ — имя пользователя, и хост с которого этот пользователь может подключаться в базу;
- IDENTIFIED BY ‘website-password’ — указываем пароль пользователя.
Администратор баз данных В следующем примере создадим учетную запись администратора баз данных который будет подключаться с IP адреса компьютера администратора 192.168.8.10
Выдадим полные права пользователю admin на базу website:
Теперь администратор может подключиться со своего компьютера к серверу баз данных. В этом примере я использовал команду create user, а уже потом grant в принципе разницы нет как будут создаваться пользователи.
Пользователь backup Создадим пользователя backup для резервного копирования всех базы данных
- GRANT SHOW DATABASES, SELECT, LOCK TABLES, RELOAD — Здесь я указал необходимый набор прав для удаленного резервного копирования и в то же время достаточный для безопасного бэкапа;
- *.* — Пользователь backup может просматривать все базы;
- ‘backup’@’%’ — пользователь backup может подключаться с любого IP адреса. Обычно не требуется разрешать подключения с любого ip для целей резервного копирования, так как у сервера backup всегда постоянный IP адрес.
Как поменять пароль? Чтобы поменять пароль можно воспользоваться командой mysqladmin эту команду нужно запускать в bash.
А так же можно воспользоваться командой (SQL синтаксис) из консоли MySQL
Как сбросить пароль root? Поменять пароль root можно всеми теми же командами, что и для обычного пользователя. Но вот что делать если вы забыли пароль рута или по каким-то причинам его утеряли, тогда проделаем следующие операции.
1) Останавливаем MySQL:
2) Запускаем MySQL с особыми параметрами:
3) Запускаем клиента MySQL:
4) Выполняем запрос SQL:
где newpassword — новый пароль
5) Применяем изменения:
6) Выходим из клиента MySQL:
7) Перезапускаем MySQL сервер:
как создавать из командной строки mysql новую базу данных и нового пользователя mysql с полными правами на только что созданную базу.
Посмотрим существующих пользователей
Дадим права пользователю test на чтение всех таблиц базы scada
Дадим все права пользователю test на все таблицы базы scada
Для того чтобы выставить новому пользователю полные права на все базы данных используем следующую команду:
Доступ к базе для данного пользователя возможен только с localhost. Если вы хотите дать ему доступ к базе с любого хоста, используете % вместо localhost:
Проверить права пользователя :
Удаляются пользователи проще, чем создаются :). Например, если мы решим избавиться от пользователя ’my_user’