Mysql дать права пользователю на базу: Создание пользователя MySQL | Losst
Создание пользователя MySQL | Losst
После того, как вы установили и настроили MySQL, вам необходимо создать базы данных, таблицы и пользователей. Конечно, вы можете сделать это от имени суперпользователя root, но это не безопасно. Да и большинство приложений не позволят вам такой вольности, например, Phpmyadmin не даст авториrзоваться от имени суперпользователя.
Поэтому для каждой базы данных нужно создавать отдельных пользователей и настраивать для них права. В этой статье мы рассмотрим, как выполняется создание пользователя mysql, а также настройка его прав.
Содержание статьи:
Создание пользователя mysql
1. Как создать пользователя MySQL
Предположим, что база данных уже создана и называется test_database. Нам нужно открыть клиент базы данных. Для этого наберите в терминале:
mysql -u root -p
Теперь можно работать. Для создания пользователя используется команда 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 в памяти. Для этого выполните:
FLUSH PRIVILEGES;
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.
Как создать нового пользователя MySQL и настроить права доступа
Главная страница » Как создать нового пользователя MySQL и настроить права доступа
Инструкция о том, как создать нового пользователя MySQL и настроить ему права доступа, используя консоль.
MySQL – это программное обеспечение для управления базами данных, которое помогает пользователям хранить, организовывать и осуществлять доступ к информации. Оно имеет множество вариантов тонкой настройки прав доступа к базам данных и таблицам для каждого пользователя.
Как создать нового пользователя
Следующая команда создает пользователя newuser с паролем password:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
Созданный пользователь имеет доступ к MySQL только с локалхоста. Чтобы пользователь мог подключаться с любого IP адреса, команда будет такая:
CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';
На данном этапе созданный пользователь newuser не имеет прав делать что-либо с базами данных. Он даже не сможет зайти в консоль MySQL со своим логином/паролем. Значит нужно предоставить пользователю доступ к информации, которая ему потребуется.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
Звездочки в этой команде задают базу и таблицу, соответственно, к которым у пользователя будет доступ. Конкретно эта команда позволяет пользователю читать, редактировать, выполнять любые действия над всеми базами данных и таблицами.
После завершения настройки прав доступа новых пользователей необходимо обновить все права доступа такой командой:
FLUSH PRIVILEGES;
Теперь ваши изменения вступят в силу.
Как настроить различные права доступа
Список некоторых возможных вариантов прав доступа, которые могут получить пользователи:
- ALL PRIVILEGES – даст пользователю MySQL полный доступ к заданной базе данных (если база данных не указана, то ко всем).
- CREATE – позволяет создавать новые таблицы или базы данных.
- DROP – позволяет удалять таблицы или базы данных.
- DELETE – позволяет удалять строки из таблиц.
- INSERT – позволяет добавлять строки в таблицу.
- SELECT – позволит использовать команду Select для чтения из баз данных.
- UPDATE – позволит редактировать строки таблиц.
- GRANT OPTION – позволит назначать или удалять права доступа для других пользователей.
Для назначения прав конкретному пользователю можно использовать следующую схему:
GRANT [тип прав] ON [название базы данных].[название таблицы] TO ‘[имя пользователя]’@'localhost’;
Используйте звездочку (*) вместо названия базы данных или таблицы, если вы хотите дать доступ к любой базе данных или к любой таблице.
После любого изменения прав доступа нужно выполнять команду:
FLUSH PRIVILEGES;
Лишение прав доступа похоже на их назначение:
REVOKE [тип прав] ON [название базы данных].[название таблицы] FROM ‘[имя пользователя]’@‘localhost’;
Команда DROP удаляет пользователя:
DROP USER ‘demo’@‘localhost’;
На этом всё, данная статья поможет вам создать нового пользователя MySQL и настроить для него необходимые права доступа 😎
13794
Смотрите также:
Понравилась статья? Поделитесь ей с друзьями!
- Веб разработка
new user mysql | IT Knowledge Base
Как создать нового пользователя
В первой части руководства по MySQL мы вносили все изменения в настройки MySQL под root-пользователем, имея полный доступ ко всем базам данных. Однако для случаев, когда могут потребоваться более жесткие ограничения, есть способы создания пользователей с особыми наборами прав доступа.
Давайте начнем с создания нового пользователя из консоли MySQL:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
К сожалению, на данном этапе пользователь “newuser” не имеет прав делать что-либо с базами данных. На самом деле, даже если если пользователь “newuser” попробует залогиниться (с паролем “password”), он не попадет в консоль MySQL.
Таким образом, первое, что нам необходимо сделать, это предоставить пользователю доступ к информации, которая ему потребуется.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
Звездочки в этой команде задают базу и таблицу, соответственно, к которым у пользователя будет доступ. Конкретно эта команда позволяет пользователю читать, редактировать, выполнять любые действия над всеми базами данных и таблицами.
Поле завершения настройки прав доступа новых пользователей, убедитесь, что вы обновили все права доступа:
FLUSH PRIVILEGES;
Теперь ваши изменения вступят в силу.
Как назначить различные права доступа
Ниже представлен короткий список некоторых возможных вариантов прав доступа, которые могут получить пользователи:
- ALL PRIVILEGES – как мы видели ранее, это даст пользователю MySQL полный доступ к заданной базе данных (если база данных не указана, то ко всем).
- CREATE – позволяет создавать новые таблицы или базы данных.
- DROP – позволяет удалять таблицы или базы данных.
- DELETE – позволяет удалять строки из таблиц.
- INSERT – позволяет добавлять строки в таблицу.
- SELECT – поволит использовать команду Select для чтения из баз данных.
- UPDATE – позволит редактировать строки таблиц.
- GRANT OPTION – позволит назначать или удалять права доступа для других пользователей.
Для назначения прав конкретному пользователю можно использовать следующую схему:
GRANT [тип прав] ON [название базы данных].[название таблицы] TO ‘[имя пользователя]’@'localhost’;
Если вы хотите дать доступ к любой базе данных или к любой таблице, поставьте звездочку (*
) вместо названия базы данных или таблицы.
Каждый раз, когда вы изменяете права доступа, не забудьте использовать команду Flush Privileges
.
Лишения прав доступа практически идентично их назначению:
REVOKE [тип прав] ON [название базы данных].[название таблицы] FROM ‘[имя пользователя]’@‘localhost’;
По аналогии с использованием команды DROP
для удаления базы данных, вы можете использовать эту команду и для удаления пользователя.
DROP USER ‘demo’@‘localhost’;
Для тестирования учетной записи созданного пользователя, разлогиньтесь с помощью команды:
quit
и залогиньтесь снова, введя в терминате следующую команду:
mysql -u [имя пользователя]-p
Просмотреть привилегии у конкретного пользователя:
mysql>show grants for username;
Создание пользователя базы данных и базу данных mysql.
Речь пойдет о создании базы данных в Mysql, пользователя, назначении прав пользователю через консоль.
1.Установку MySQL мы пропустим, вы можете ее посмотреть в предыдущих темах, где затрагивалась тема установки MySQL.
Начнем с подключения к БД:
[root@localhost]# mysql -u root -p
2.Создаем новую базу с именем “dbase_name”:
create database dbase_name;
Просмотреть список текущих баз данных:
SHOW DATABASES;
3. Создаем пользователя MySQL с именем db_user и паролем ‘pass’:
create user 'db_user'@'localhost' identified by 'pass';
Назначаем привилегии пользователю:
GRANT ALL PRIVILEGES ON dbase_name.* to 'db_user'@'localhost' -> IDENTIFIED BY 'pass' WITH GRANT OPTION;
Для применения изменения запустите команду обновления:
FLUSH PRIVILEGES;.
4. Перезаходим под только созданным пользователем:
exit mysql -u db_user -p
Выбираем для работу нашу БД:
use dbase_name;
Как удалить пользователя и базу данных Mysql.
Удалить пользователя:
DROP USER ‘db_user’@‘localhost’;
Удалить базу:
mysql> drop database db_name;
Как посмотреть пользователей mysql
Заходим в базу данных Mysql:
#mysql -uroot -p
Выбираем системную базу данных MySQL:
mysql>use mysql;
Выводим список всех пользователей базы данных mysql:
mysql>select user from user;
Узнать привилегии пользователя в MySQL, используя консоль, выполняем:
mysql>show grants for %username%;
где %username% имя пользователя.
Показать MySQL пользователей вместе с хостами с которых им разрешено подключение:
mysql> SELECT user,host FROM mysql.user;
Посмотреть MySQL пользователей, их пароли и хосты:
mysql> SELECT user,host,password FROM mysql.user;
начиная с MySQL 5.7:
mysql> SELECT host, user, authentication_string FROM mysql.user;
Создание нового пользователя MySQL с привилегиями на определенную БД
В этой короткой заметке пойдет речь о том, как создать нового пользователя в СУБД MySQL
и дать ему привилегии на определенную БД.
Для начала необходимо подключиться к MySQL от рутового пользователя или любого другого, который имеет права CREATE USER
и GRANT
:
mysql -uroot -ppassword
Создание пользователя осуществляется следующей командой:
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'user_password';
Здесь user_name
— имя нового пользователя, localhost
— хост с которого разрешено подключаться (если указать %
, то коннект будет доступен с любого IP), user_password
— пароль нового пользователя.
Пользователь создан, но пока что он ничего не может. Необходимо дать ему доступ к БД:
GRANT ALL PRIVILEGES ON `user_db_name`.* TO 'user_name'@'localhost';
Данная команда дает пользователю user_name
работающему через localhost
все привилегии для работы с БД user_db_name
.*
показывает, что доступ разрешен ко всем таблицам. Вместо ALL PRIVILEGES
можно задать только определенные права. Список привилегий на официальном сайте mysql.com
.
Также можно разрешить пользователю доступ к группе баз данных попадающих под определенную маску. Например:
GRANT ALL PRIVILEGES ON `db_prefix_%`.* TO 'user_name'@'localhost';
Теперь пользователь имеет разрешение на доступ ко всем базам название которых начинается с db_prefix_
.
Итак, финальным штрихом будет сброс КЭШа пользователей базы данных:
FLUSH PRIVILEGES;
Вот так просто и незатейливо можно создать нового пользователя в СУБД MySQL и дать ему определенные права на БД.
Права и привилегии пользователей MySQL в панели управления Хостингом
Базы данных (MySQL) представляет собой сущность для хранения информации в виде таблиц. Дабы чужие БД не были доступны абсолютному каждому пользователю на сервере, существует система пользователей для этих баз данных. Сам доступ к какой-либо БД может быть назначен администратором (либо уполномоченным пользователем) другому пользователю, причем он может быть полным или в некоторой степени ограниченным.
Все данные в ее базах хранятся в виде логически связанных между собой таблиц, доступ к которым осуществляется с помощью языка запросов SQL. Mysql – свободно распространяемая система, т.е. платить за ее применение не нужно. Кроме того, это достаточно быстрая, надежная и, главное, простая в использовании СУБД, вполне подходящая для не слишком глобальных проектов.
Права для пользователей MySQL
Существует некоторое количество привилегий в системе БД MySQL которые указаны ниже с описанием. Последние привилегии являются привилегиями администраторского уровня, что явно указано лишь для справки. Полная информация о правах/привилегиях доступна в документации разработчика MySQL:
CREATE — позволяет создавать новые базы данных и таблицы
DROP — позволяет удалять базы данных или таблицы
INSERT — позволяет добавлять строки к таблице.
UPDATE — позволяет изменять содержание строк таблиц. Не путать с ALTER, которая позволяет изменять саму структуру таблиц (количество строк/столбцов, типы столбцов).
DELETE — противоположна INSERT — позволяет удалять строки из таблицы.
ALTER — позволяет изменять структуру таблиц. Требует CREATE и INSERT привилегии.
SELECT — позволяет читать (выводит строки) таблицы, используя выборки по столбцам и/или по некоторым арифметическим и логическим критериям.
GRANT OPTION — позволяет назначить конкретные права определенному пользователю (также и отобрать). Возможно дать/отобрать только те права, которыми назначающий сам располагает.
LOCK TABLES — блокирует таблицу на время искусственного внесения в нее изменений (администрирование), чтобы данные внутри нее не могли измениться своим естественным путем (во время рабочего процесса).
REFERENCES — позволяет создавать связь между таблицами по внешнему ключу.
EVENT — дает право на создание/изменение/удаление заданий для планировщика
TRIGGER — позволяет создавать/изменять/удалять триггеры (привязываемые к определенным таблицам), которые при выполнении операций DELETE, UPDATE или INSERT совершают дополнительные действия.
INDEX — привилегия даёт право добавлять/удалять индексы к (из) таблицам. Сами индексы назначаются вручную, и дают возможность сэкономить время на поиске строк.
CREATE TEMPORARY TABLES — позволяет создавать временные таблицы на время сессии.
CREATE VIEW — позволяет создать некоторое представление в виде таблицы, которая фактически не существует как единая и содержит лишь данные других таблиц. К примеру, в этом представлении можно собрать определенные сгруппированные данные из трёх таблиц (оператором SELECT) и по факту собранные данные будут лишь ссылаться на данные этих 3-х таблиц и также будут объединением, не нуждающимся в собственной таблице.
SHOW VIEW — позволяет проверить каким запросом (из каких данных состоит) создано определенное представление, заданное с помощью CREATE VIEW
CREATE ROUTINE — позволяет создать процедуру, которая является набором заготовленным набором SQL-команд.
ALTER ROUTINE — позволяет изменить процедуру, созданную посредством CREATE ROUTINE.
EXECUTE — позволяет вызывать готовые процедуры.
FILE — предоставляет доступ на чтение любого файла на сервере, к которому есть доступ у самой системы MySQL и доступ на создание файла в директориях, на которые у MySQL есть права записи.
CREATE TABLESPACE (admin) — позволяет создавать/изменять/удалять пространства таблиц. Само это пространство является логическим и не связано со структурой БД или схемой. Оно декларирует расположение объектов БД на физических носителях и используется для оптимизации системы БД.
CREATE USER (admin) — позволяет создавать/изменять/переименовывать/удалять пользователей баз данных.
PROCESS (admin) — разрешает доступ к информации о потоках (процессах) исполняющихся на сервере.
PROXY (admin) — позволяет войти пользователем под видом другого пользователя. Используется администратором для проверки/отладки прав доступа у необходимого пользователя.
RELOAD (admin) — разрешает использование оператора FLUSH, который чистит кеш MySQL
REPLICATION CLIENT (admin) — позволяет выполнять операции SHOW MASTER STATUS, SHOW SLAVE STATUS и SHOW BINARY LOG.
REPLICATION SLAVE (admin) — данная привилегия необходима пользователям ведомого сервера БД, чтобы этот сервер мог подключаться к ведущему серверу в роли ведомого. Без этой привилегии ведомые сервера не смогут запрашивать обновления баз данных и таблиц у ведущего сервера.
SHOW DATABASES (admin) — позволяет выполнять оператор SHOW DATABASES. Пользователи, не имеющие подобной привилегии, при выполнении данного оператора смогут лишь увидеть базы данных к которым у них есть какие-либо права.
SHUTDOWN (admin) — привилегия позволяет выполнить оператор SHUTDOWN, выключающий MySQL сервер.
SUPER (admin) — привилегия, дающая право на множество операций:
- позволяет завершить процессы, принадлежащие другим пользователям
- изменить глобальные системные переменные
- включать/отключать логирование
- производить обновления даже при установленных правах на чтение для системных переменных
- запускать/останавливать репликации на ведомых серверах
ALL (admin) — пользователю, получившему данную привилегию, автоматически назначаются все права в рамках уровня привилегий (возможных привилегий в принципе, согласно контексту выдачи привилегий). Не назначается только привилегия GRANT OPTION в данном случае.
Назначение прав для пользователей MySQL в панели управления
На главной странице cPanel перейдем в раздел «Базы данных → Базы данных MySQL»:
Все операции с базами данных MySQL, пользователями БД и их правами производятся именно в этом меню.
Если у нас нет ни базы, ни пользователя, то создаем их в соответствующих разделах страницы:
Создаем пользователя:
Раздел Текущие пользователи обновится:
Для назначения прав определенному пользователю к определенной базе данных нам необходимо найти на странице раздел Добавить пользователя в базу данных и добавить необходимого пользователя к необходимой базе данных:
После добавления пользователя к базе данных откроется диалоговое окно для назначения привилегий:
Кнопка «Все права» эквивалентна привилегии ALL, описанной в начале руководства, и назначит все возможные права пользователю в контексте принадлежности пользователя определенной группе пользователей на уровне всего MySQL сервера.
После подтверждения внесенных изменений будет переадресация на страницу, подтверждающую что указанные права были выданы и на странице управления базами и пользователями MySQL повторно обновится раздел Текущие базы данных:
Готово.
Создание базы MySQL и назначение привилегий пользователю
MySQL является очень распространенной базой данных, которую применяют в различных проектах (к примеру, проект LAMP — Linux / Apache / MySQL / PHP, который распространен во многих организациях по всему миру).
В процессе работы с MySQL, возникает необходимость создания новой базы данных и пользователя, от имени которого будут производится запросы к этой базе данных, а также назначение прав доступа к тем или иным данным этой базы.
Давайте, на примере создания базы данных testbase, пошагово рассмотрим сам процесс создания базы данных в MySQL.
Для начала, мы должны иметь установленный сервер mysql. Если он у вас еще не установлен, то установим его при помощи менеджера пакетов или, вручную, при помощи команд (в зависимости от дистрибутива):
В Debian/Ubuntu:$ sudo apt-get install mysql-server
В RedHat/Fedora и их производных:$ sudo yum install mysql-server
В Zenwalk:$ sudo netpkg mysql-server
После установки необходимых пакетов, запустим сервер mysql командой (в зависимости от используемого дистрибутива):$ sudo /etc/rc.d/rc.mysqld start
или $ sudo /etc/init.d/mysqld start
или $ sudo service mysqld start
Затем осуществим подключение к серверу MySQL, используя аккаунт суперпользователя root:$ mysql -u root
Внимание! По умолчанию, при подключении к базе данных под пользователем root с localhost, ввод пароля не обязателен.
Если, при установке сервера mysql вы назначили пользователю какой-либо пароль, то вы можете подключиться к серверу mysql, используя ключ -p : $ mysql -u root -p
Enter password:
После успешного подключения, выполним команду создания базы данных:mysql> create database testbase;
Затем создадим пользователя baseuser для подключения к базе данных и назначим ему пароль «userpasswd»:mysql> grant usage on *.* to baseuser@localhost identified by ‘userpasswd’;
И, наконец, назначаем все привилегии (права) на базу testbase пользователю baseuser:mysql> grant all privileges on testbase.* to baseuser@localhost;
Символ * (звездочка) означает “все таблицы в базе данных”.
Все, с поставленной задачей мы справились.
Теперь проверим возможность подключения пользователя baseuser к базе данных testbase:$ mysql -u baseuser -p ‘userpasswd’ testbase
Как предоставить все привилегии для базы данных в MySQL
Чтобы начать редактирование привилегий в MySQL, вы должны сначала войти на свой сервер, а затем подключиться к клиенту mysql
. Обычно вам нужно подключиться к root
или любой другой учетной записи, которая является вашей основной учетной записью «суперпользователя», которая имеет полный доступ на протяжении всей установки MySQL.
Обычно пользователю root
назначается пароль аутентификации при установке MySQL, но если это не так, вам следует предпринять шаги для повышения безопасности, добавив пароли root
, как показано в официальной документации.
В этом примере мы предположим, что root
является основной учетной записью MySQL. Чтобы начать использовать инструмент командной строки MySQL ( mysqlcli
), подключитесь к серверу как пользователь root , затем введите команду
mysql
:
$ MySQL
Добро пожаловать в монитор MySQL. Команды заканчиваются на; или \ g.
Ваш идентификатор подключения MySQL - 112813
Версия сервера: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>
В случае успеха вы увидите выходные данные о вашем соединении с MySQL и увидите приглашение mysql
.
Примечание: в случае, если вы не можете напрямую подключиться к серверу в качестве пользователя root
перед подключением к mysql
, вы можете указать пользователя, которого вы хотите подключить , как , добавив --user =
флаг:
Предоставление привилегий
Теперь, когда вы находитесь в командной строке mysqlcli
, вам нужно только ввести команду GRANT
с необходимыми параметрами, чтобы применить соответствующие разрешения.
Типы привилегий
Команда GRANT
может применять широкий спектр привилегий, от возможности СОЗДАТЬ
таблиц и баз данных, читать или записывать ФАЙЛОВ
и даже SHUTDOWN
на сервере. Команде доступен широкий спектр флагов и параметров, поэтому вы можете ознакомиться с тем, что на самом деле может делать GRANT
, просмотрев официальную документацию.
Привилегии, специфичные для базы данных
В большинстве случаев вы будете предоставлять привилегии пользователям MySQL на основе конкретной базы данных
, к которой учетная запись должна иметь доступ.Обычной практикой является, например, для каждой уникальной базы данных MySQL на сервере иметь своего собственного уникального пользователя
, связанного с ней, так что только один единственный пользователь
имеет доступ для аутентификации к одной единственной базе данных
и наоборот. наоборот.
— ПРЕДОСТАВИТЬ ВСЕ привилегии
пользователю
, позволяя этому пользователю полный контроль над конкретной базой данных .
, используйте следующий синтаксис:
mysql> ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА имя_базы_данных.* TO 'username' @ 'localhost';
С помощью этой команды мы отправили MySQL по адресу:
-
GRANT
PRIVILEGES
типаALL
(таким образом, все, конечно). Примечание. Большинство современных установок MySQL не требуют дополнительного ключевого словаPRIVILEGES
. - Эти привилегии предназначены для
имя_базы_данных
и применяются ко всем таблицам этой базы данных, что обозначено следующим значением. *
. - Эти привилегии назначаются
имени пользователя
, когда это имя пользователя@ 'localhost'
. Чтобы указать любой допустимый хост, замените'localhost'
на'%'
.
Вместо того, чтобы предоставлять все привилегии для всей базы данных, возможно, вы захотите дать пользователю tolkien
только возможность читать данные ( SELECT
) из таблицы авторов
базы данных books
.Это легко сделать так:
mysql> ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА books.authors 'tolkien' @ 'localhost';
Создание другого суперпользователя
Хотя это и не особо безопасно, в некоторых случаях вы можете захотеть создать другого «суперпользователя», который будет иметь ВСЕ привилегии во ВСЕХ базах данных на сервере. Это можно сделать аналогично описанному выше, но заменив имя_базы_данных
на подстановочный знак звездочки:
mysql> ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА *.* TO 'tolkien' @ '%';
Теперь tolkien
имеет те же привилегии, что и учетная запись root по умолчанию , будьте осторожны!
Сохранение изменений
В качестве последнего шага после любых обновлений прав пользователей обязательно сохраните изменения, введя команду FLUSH PRIVILEGES
из приглашения mysql
:
mysql> ПРИВИЛЕГИИ ПРОМЫВКИ;
Запрос в порядке, затронуто 0 строк (0,01 сек)
.
создать базу данных и пользователя mysql и установить привилегии php
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира
.
Администрирование MySQL: управление пользователями и привилегиями
Несмотря на то, что это не рекомендуется, вы должны знать, как предоставить пользователю все привилегии. Следующее утверждение показывает, как вы предоставляете все привилегии.
GRANT ALL ON *. * TO 'myuser' @ 'localhost' С ОПЦИЕЙ GRANT;
Параметр GRANT ALL дает пользователю myuser все права на все базы данных и все таблицы. Как вы можете догадаться, это дает пользователю полный контроль над вашими базами данных и связанными с ними данными.Эту команду можно использовать с доверенными пользователями и администраторами более высокого уровня.
Давайте уменьшим привилегии для нашей учетной записи myuser @ localhost. Вместо этого мы просто хотим предоставить этому пользователю полный контроль над конкретной базой данных. Вы могли бы использовать этот тип привилегий с администратором для конкретной базы данных. В некоторых случаях может потребоваться, чтобы приложение имело полный контроль над базой данных для управления таблицами и данными из приложения.
В следующем примере myuser предоставляется полный доступ к базе данных sampledatabase.
GRANT ALL sampledatabase. * TO 'myuser' @ 'localhost' С ОПЦИЕЙ GRANT;
Обратите внимание, что это заявление также включает оператор GRANT OPTION. Это означает, что пользователь может предоставлять другим пользователям права доступа к базе данных. Пользователь может передавать только свои собственные разрешения, а это означает, что поскольку myuser имеет доступ к базе данных sample, он может передавать разрешения на базу данных sample другим пользователям. Если бы мы указали только разрешения SELECT, то myuser мог бы передавать только разрешения SELECT другим пользователям.
В приведенном выше примере пользователь myuser имеет доступ к данным SELECT, INSERT, DELETE и UPDATE. Если ваша база данных содержит конфиденциальную информацию, вы можете не захотеть, чтобы у этого пользователя было столько привилегий. Возможно, вы хотите разрешить myuser только читать данные, но они не должны иметь возможность их изменять. В этом случае вы должны предоставить myuser только права SELECT для базы данных.
Чтобы указать разрешения для базы данных sampledatabase, используйте следующую команду.
GRANT SELECT ON sampledatabase. * TO 'myuser' @ 'localhost';
Подстановочная звездочка в этом операторе снова указывает MySQL на предоставление разрешений для всех таблиц, но в этом случае мы разрешаем пользователю только ВЫБРАТЬ данные из таблиц sampledatabase.
Мы можем еще больше сузить разрешения. Мы можем предоставить myuser доступ только к одной конкретной таблице. Например, предположим, что вы хотите, чтобы myuser читал только данные о клиентах, но не хотите, чтобы этот пользователь имел доступ к финансовым данным в той же базе данных.Используя подстановочный знак и предыдущие образцы, пользователь будет иметь доступ ко всем таблицам и, следовательно, ко всем данным таблицы. MySQL позволяет указывать определенные таблицы при предоставлении разрешений пользователям.
Взгляните на следующий пример.
GRANT SELECT ON sampledatabase.Customer TO 'myuser' @ 'localhost';
В приведенном выше запросе пользователь имеет доступ только к таблице клиентов. Единственное действие, которое myuser может выполнить с таблицей, - это оператор SELECT, поэтому пользователь может только читать данные, но не может их изменять или удалять.
Вы можете еще больше сузить права пользователей. Самый низкий уровень, который вы можете предоставить, - это разрешения на уровне столбца. Эти разрешения определяют столбцы, которые пользователь может читать, редактировать или удалять. Например, предположим, что вы хотите, чтобы у myuser были только права на чтение столбца Customer first_name.
Следующий оператор SQL задает разрешение на чтение для столбца first_name.
GRANT SELECT (first_name) ON sampledatabase.Customer TO 'myuser' @ 'localhost';
Теперь у вашего пользователя есть доступ только к одному столбцу в таблице Customer.
После предоставления разрешений необходимо использовать команду FLUSH. Думайте о команде FLUSH как о способе сбросить разрешения пользователей и переназначить любые новые. Вам необходимо запустить команду после предоставления разрешений, чтобы сообщить базе данных о необходимости перечитать текущую таблицу разрешений пользователя, иначе ваши вновь предоставленные разрешения останутся незамеченными до следующей перезагрузки сервера.
Чтобы запустить эту команду, введите следующий оператор в командную строку MySQL.
ПРИВИЛЕГИИ ПРОМЫВКИ;
Просмотр пользователей в вашей базе данных
Когда к вам приходят и уходят сотрудники или другие администраторы, вы должны время от времени просматривать список пользователей, имеющих доступ к вашему серверу базы данных.Иногда администраторы уходят, а вы забываете удалить имя пользователя. Возможно, вам потребуется просмотреть пользователей, чтобы определить, была ли взломана ваша база данных и повышены ли привилегии для неизвестной учетной записи. Иногда полезно тщательно проверять своих пользователей и при необходимости удалять и редактировать их.
База данных MySQL хранит большинство своих конфигураций в системных таблицах. Пользователи также хранятся в системных таблицах. Для учетных записей пользователей вы должны запросить таблицу mysql.user, чтобы просмотреть список пользователей и хостов с разрешениями для вашей базы данных.
Во-первых, давайте посмотрим на список пользователей, которые были созданы в MySQL. Следующая команда позволяет просматривать всех пользователей.
выберите пользователя, хост из mysql.user;
Эта команда показывает только два столбца из пользовательской таблицы. Поскольку мы создали пользователя с именем myuser, вы должны увидеть аналогичный результат, как показано ниже.
пользователь, хост
------------------------------
корень%
локальный хост myuser
Пользователь root является главным администратором, поэтому обычно с ним связан шаблон хоста.Пользователь root имеет полный доступ ко всем базам данных и таблицам, поэтому его обычно можно увидеть с повышенными и всеми привилегиями.
Мы создали учетную запись myuser с именем хоста localhost, поэтому мы также должны увидеть ее в таблице пользователей.
Приведенная выше команда показала нам пользователей, которых мы создали в базе данных, но мы до сих пор не знаем прав доступа, связанных с каждым пользователем. Когда вы администрируете базу данных MySQL, вы хотите знать, у кого есть доступ к данным и кто может изменять разрешения для таблиц базы данных.Чтобы просмотреть список разрешений, используйте команду SHOW GRANTS. Эта команда отображает пользователей и связанные с ними разрешения.
Взгляните на следующий пример.
SHOW GRANTS для 'root' @ '%';
Как и ожидалось, будет показан следующий результат.
Гранты для root @%
-------------------------------------
ПРЕДОСТАВЛЯТЬ ВСЕ ПРИВИЛЕГИИ НА *. * 'Root' @ '%' С ОПЦИЕЙ ПРЕДОСТАВЛЕНИЯ
.
Как создавать и управлять базами данных MySQL, таблицами и пользователями
В этой статье описывается, как выполнять стандартные задачи администрирования баз данных MySQL из командной строки с помощью программы mysql .
Эта статья применима только к продуктам, перечисленным на боковой панели Описание статьи . Если ваша учетная запись включает cPanel, вам следует использовать ее для управления базами данных MySQL и пользователями. Информацию о том, как это сделать, см. В этой статье.
Создание баз данных MySQL и пользователей
Чтобы создать базу данных MySQL и пользователей, выполните следующие действия:
- В командной строке войдите в MySQL как пользователь root:
mysql -u root -p
- Введите пароль root MySQL и нажмите Enter.
Чтобы создать пользователя базы данных, введите следующую команду. Замените имя пользователя на пользователя, которого вы хотите создать, и замените пароль на пароль пользователя:
ПРЕДОСТАВЛЯТЬ ВСЕ ПРИВИЛЕГИИ НА *. * TO 'username' @ 'localhost' IDENTIFIED BY 'password';
Эта команда предоставляет пользователю все разрешения. Однако вы можете предоставить определенные разрешения для точного контроля доступа к базе данных. Например, чтобы явно предоставить разрешение SELECT , вы должны использовать следующую команду:
GRANT SELECT ON *.* TO 'username' @ 'localhost';
Для получения дополнительной информации о настройке разрешений для базы данных MySQL посетите https://dev.mysql.com/doc/refman/5.5/en/grant.html.
- Наберите \ q для выхода из программы mysql .
Чтобы войти в MySQL как пользователь, которого вы только что создали, введите следующую команду. Замените username именем пользователя, созданного на шаге 3:
mysql -u username -p
- Введите пароль пользователя и нажмите Enter.
Чтобы создать базу данных, введите следующую команду. Замените dbname именем базы данных, которую вы хотите создать:
CREATE DATABASE dbname;
Для работы с новой базой данных введите следующую команду. Заменить
.