Я создал базу данных, например «mydb».
CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;
Теперь я могу войти в базу данных отовсюду, но не могу создавать таблицы.
Как предоставить все привилегии для этой базы данных и (в будущем) таблиц. Я не могу создавать таблицы в базе данных mydb. Я всегда получаю:
CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'
mysql
mariadb
mysql-error-1142
marioosh
источник
источник
FLUSH PRIVILEGES
?flush privileges
не требуется при использованииgrant
команд. x4FLUSH PRIVILEGES;
только при изменении таблицы привилегий непосредственно используя операторы , такие какINSERT
,UPDATE
илиDELETE
Ответы:
Так я создаю свои привилегии «Суперпользователь» (хотя я обычно указываю хост).
ВАЖНАЯ ЗАМЕТКА
Хотя этот ответ может решить проблему доступа,
WITH GRANT OPTION
создает пользователя MySQL, который может редактировать разрешения других пользователей .По соображениям безопасности вы не должны использовать этот тип учетной записи пользователя для любого процесса, к которому у общественности будет доступ (например, к веб-сайту). Рекомендуется создать пользователя только с правами доступа к базе данных для этого вида использования.
источник
myuser
свое собственное имя пользователя.Это старый вопрос, но я не думаю, что принятый ответ является безопасным. Это хорошо для создания суперпользователя, но не хорошо, если вы хотите предоставить привилегии для одной базы данных.
%
Кажется, не распространяется на сокет связи, чтоlocalhost
для.WITH GRANT OPTION
подходит только для суперпользователя, в противном случае это обычно угроза безопасности.Обновление для MySQL 5.7+ выглядит следующим образом:
Так что установка пароля должна быть с отдельными командами. Спасибо за комментарий от @ scary-wombat.
Надеюсь это поможет.
источник
WITH GRANT OPTION
и нацеливание на указанную базу данных вместо all (*
).unix sockets
. При использованииlocalhost
myslq клиент на linux пытается использовать сокет unix вместо TCP-соединения с сервером.Это будет полезно для некоторых людей:
Из командной строки MySQL:
К сожалению, на данный момент newuser не имеет права что-либо делать с базами данных. Фактически, если newuser даже попытается войти в систему (с помощью пароля и пароля), он не сможет получить доступ к оболочке MySQL.
Поэтому первое, что нужно сделать, - предоставить пользователю доступ к информации, которая ему потребуется.
Звездочки в этой команде относятся к базе данных и таблице (соответственно), к которым они имеют доступ - эта конкретная команда позволяет пользователю читать, редактировать, выполнять и выполнять все задачи во всех базах данных и таблицах.
После того, как вы завершили разрешения, которые вы хотите настроить для своих новых пользователей, всегда обязательно перезагрузите все привилегии.
Ваши изменения вступят в силу.
За дополнительной информацией: http://dev.mysql.com/doc/refman/5.6/en/grant.html
Если вы не знакомы с командной строкой , то вы можете использовать клиент , как MySQL Workbench , Navicat или SQLyog
источник
flush privileges
не требуется при использованииgrant
команд. x4GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost' IDENTIFIED BY 'my_password' WITH GRANT OPTION;
(странно ..., но верно)1. Создайте базу данных
2. Создайте имя пользователя для базы данных db_name
3. Используйте базу данных
4. Наконец, вы находитесь в базе данных db_name и затем выполняете команды, такие как операции создания, выбора и вставки.
источник
username
все привилегии должны быть включены,db_name
но неDROP db_name;
привилегии?Этот SQL предоставляет все базы данных, но только основные привилегии. Их достаточно для Drupal или Wordpress и, как ни странно, позволяет создать одну учетную запись разработчика для локальных проектов.
источник
Работает для привилегий на схеме :)
Необязательно: после
mypasswd
того, как вы можете добавитьWITH GRANT OPTION
источник
Я мог бы заставить его работать только путем добавления
GRANT OPTION
, без этого всегда получаю ошибку «Отказано в доступе»источник
Здравствуйте, я использовал этот код, чтобы иметь супер пользователя в MySQL
а потом
источник
flush privileges
не требуется при использованииgrant
команд. x4GRANT
варьируется между версиями MySQL.Доступ только с удаленного сервера к базе данных mydb
Доступ с удаленного сервера ко всем базам данных.
источник
Чтобы предоставить все привилегии в базе данных:
mydb
пользователю:myuser
просто выполните:или:
PRIVILEGES
Ключевое слово не нужно.Также я не знаю, почему другие ответы предлагают
IDENTIFIED BY 'password'
поставить в конце команды. Я считаю, что это не требуется.источник