2009-11-12 4 views
0

Хорошо, я пытаюсь добавить пользователя в базу данных MySQL. Этот пользователь должен иметь возможность добавлять других пользователей в базу данных, для которой у нее есть привилегии. Итак, я сделал это:Пользователи MySQL и все привилегии

GRANT ALL privileges ON thedbname.* TO 'topuser'@'%' IDENTIFIED BY 'pass'; 

Однако, этот пользователь не может добавлять пользователей. Это потому, что я только дал им «все» для одной базы данных? Разрешения отображаются как «N», когда я их просматриваю, а если я удалю имя базы данных, они будут отображаться как «Y».

Я хочу «topuser», чтобы быть в состоянии выполнить это:

GRANT SELECT ON thedbname.* TO 'seconduser'@'%' IDENTIFIED BY 'pass'; 

Им не нужно добавлять пользователей к другим базам данных, поэтому мои попытки здесь.

Это веб-приложение, в котором пользователи предоставляют имя пользователя и пароль для доступа к базе данных, чтобы пароль не хранился в коде. Другие решения приветствовали!

ответ

1

Вы должны предоставить грант другим привилегиям. Руководство по GRANT доступно here.

MySQL включать только основные привилегии в ALL, если вы внимательно посмотрите на документацию, говорит все:

Grant all privileges at specified access level except GRANT OPTION 

так что вы должны предоставить «вариант гранта» на свой верхний пользователь:

GRANT GRANT OPTION ON thedbname.* TO 'topuser'@'%' IDENTIFIED BY 'pass'; 
+0

Пробовал уже, но с «кодом ошибки 1410, SQL состояния 42000: Вы не можете создать пользователя с GRANT» ошибка. – ajr

+0

У вас есть root-доступ к серверу? – RageZ

0
DELETE FROM mysql.user WHERE user LIKE 'admin'; 
INSERT INTO mysql.user (host, user, password) VALUES ('localhost', 'admin', 'portal01'); 
INSERT INTO mysql.user (host, user, password) VALUES ('%', 'admin', 'portal01'); 
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'portal01' WITH GRANT OPTION;sudo 
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'portal01' WITH GRANT OPTION; 
FLUSH PRIVILEGES; 
SELECT * FROM mysql.user ORDER BY user; 
+0

Можете ли вы использовать инструменты кода? Это выглядит не так хорошо ... – Castiblanco

+0

Конечно, вы можете сделать это со сценарием. Это просто необработанный код, который даст вам необходимую информацию. У меня есть копия таблицы mysql.user с одного сервера на другой, когда потеряна корневая информация. Существует несколько способов кожи кошки. – Petrovitch

Смежные вопросы