SHOW GRANTS

spartan

Guest
SHOW GRANTS

Никогда бы не подумал что буду задовать столь примитивный вопрос.
SHOW GRANTS FOR root;
таким образом я увижу список привелегий, выставленных пользователю root, правильно?

SHOW GRANTS FOR root@localhost;
то же самое? Или как нибудь отличается?

Вот основной квештн:
как сформировать такой запрос в php?

Пробовал: MYSQL_QUERY('SHOW GRANTS FOR "root"');
пишет:"Query was empty"

Подскажите пожалуйста, как же надо написать правильно?
 

Profic

just Profic (PHP5 BetaTeam)
По поводу первого вопроса:
Это разные вещи.
1) показывает доступ для рута со всех машин
2) показывает доступ для рута с локальной машины
При коннекте есть записть для пользователя с таким-то именем машины, откуда он коннектиться, то используется она вместо общей. У меня например доступ для рута открыт только с локальной машины и потому первый запрос возвращает
mysql> show grants for "root";
ERROR 1141: There is no such grant defined for user 'root' on host '%'
mysql>
Насчет второго вопроса:
Попробуй [sql]SELECT * FROM mysql.user[/sql], это не совсем то, но почти то же самое :)
 

spartan

Guest
это не совсем то, но почти то же самое
к сожалению не подходит - у хостера БД mysql, естественно, под паролем.
А что, в PHP нет такого оператора, который бы показывал привелегии мускула ?
 

Profic

just Profic (PHP5 BetaTeam)
Я вот одного не пойму. Ты хочешь посмотреть свои привелегии или другого пользователя? Если другого - то врядли получится, ибо
Код:
mysql> show grants for root@localhost;
ERROR 1044: Access denied for user: 'test@localhost' to database 'mysql'
mysql> show grants for test@localhost;
+------------------------------------------------------------------------------------+
| Grants for test@localhost                                                          |
+------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test'@'localhost' IDENTIFIED BY PASSWORD '378b243e220ca493' |
| GRANT ALL PRIVILEGES ON `wek_account`.* TO 'test'@'localhost'                      |
+------------------------------------------------------------------------------------+
2 rows in set (0.01 sec)
mysql>
Ведь очень врядли из-под php у хостера ты подключаешься к муське из-под рута.
 

spartan

Guest
Я хочу посмотреть свои привелегии, через PHP, можно ли это как-либо реализовать?
Чужие привелегии мне не нужны, я знаю что до них не добраться.

-~{}~ 25.11.04 16:20:

Мне всего лишь нужна формулировка этого оператора (SHOW GRANTS FOR root;) в PHP.
А root там написано просто для примера.
Надеюсь, что разработчики PHP не обделили нас его отсутствием.
 

Profic

just Profic (PHP5 BetaTeam)
SELECT USER();
и потом
SHOW GRANTS FOR <то, что получили первым запросом>;
не работает?
 

spartan

Guest
1) вот так, что ли ?
PHP:
$priv = MYSQL_QUERY('SELECT USER(мой_юзверь)');
echo(MYSQL_QUERY('SHOW GRANDS FOR $yo'));
Понимаешь, я не уверен, правильно ли пишу...
mySQL говорит: "Access denied for user: '@localhost' (Using password: NO)".
И это у меня на локалке, где всем юзерам всё разрешено.

2) Кстати ещё вопрос, допустим у меня ,локально , есть юзер "me" , выставляю ему все привелегии, а в ответ:
"Access denied for user: '@localhost' (Using password: NO)" , хотя если ставить все, кроме "FILE" то всё нормально выставляется, "FILE" почему-то не хочет ставиться, ведь она нужна больше всего, может кто-нибудь сталкивался с подобной проблемой ?

-~{}~ 25.11.04 17:21:

/\
/\
/\
код немного неправильный был, исправил:
PHP:
$priv = MYSQL_QUERY('SELECT USER(мой_юзверь)'); 
echo(MYSQL_QUERY('SHOW GRANDS FOR $priv ));
Но безрезультатно...
Что скажите, товарищи.
Как же мне получить инфу о моих привелегиях ?
 

Profic

just Profic (PHP5 BetaTeam)
1) для USER() не нада никаких параметров
2) очень настораживает '@localhost' т.е. хост без юзверя

Слушай, а ты умеешь работать с mysql в php? Похоже, что нет. Ибо только так я могу объяснить такой код.
 

ys

отодвинутый новичок
Это, а может всеж вместо SHOW GRANDS - SHOW GRANTS ?
 

ys

отодвинутый новичок
И кстати spartan если твой mysql login не имеет прав смотреть в database mysql - то SHOW GRANTS .. тебе это и скажет.

По существу вопроса: Спроси у провайдера :)
 

spartan

Guest
люди, ну чтож вы сразу пинать начинаете?
Признаюсь - в php и mySQL я новичёк, все же с чего-то начинают...

toys :
у меня код правильный, когда пост писал - опечатался...
Инет на одом компе, работаю на другом, а сетки временно нету, приходится писать на ходу, вот и опечатки.
Мой mysql login имеет право смотреть.

to Profic :
даже без параметров USER(), эта система не работает.
скажи пожалуйста, может я в чём то ошибаюсь ?,
моожет тут в корне всё не правильно ?

Люди, плиз, подскажите что-нибудь дельное, ведь, скорее всего, каждый из вас отлично знает как это решить, понимаю что рассказывать всё, что знаешь, новичку только что пришедшему на форум, не очень приятно, но поймите же меня - два дня мучится над одной проблемой, которая проста до невозможности - это уже слишком, вот и решил вам написать...
 

Profic

just Profic (PHP5 BetaTeam)
[m]mysql_query[/m]() - смотрим, что именно возвращает эта функция
[m]mysql_errno[/m]() и [m]mysql_error[/m]() - если есть ошибки, то их нужно показать, а то непонятно с чем боремся
[m]mysql_fetch_array[/m]() - получаем данные "подготовленные" первой функцией

Да, кстати, это - ссылки: ткнув на них можно почитать описание и примеры.
 

spartan

Guest
Profic
Спасибо за ссылки, полезные...
Отталкиваясь от них пишу:

$hostname = "localhost";
$username = "spartan";
$password = "qwerty";
$dbName = "my_db";
$userstable = "my_table";
MYSQL_CONNECT($hostname,$username,$password);
echo($statistic);
@mysql_select_db("$dbName") ;
PHP:
$var1 = MYSQL_QUERY('SELECT USER()');
$var2=(MYSQL_QUERY('SHOW GRANTS FOR $var1'));
$var3= (mysql_fetch_array($func, MYSQL_NUM));
echo($var3);
выдаёт такой еррор :
'There is no such grant defined for user '$var1' on host '%'

млин, что бы это значило, объясните мне, дубу...
И вообще реально ли сделать запрос в mysql SHOW GRANTS FOR, или я зря стараюсь третий день?

-~{}~ 26.11.04 12:54:

На третьем дне мой старания увенчались успехом !!!

Вот рабочий код - специально для таких как я :
PHP:
$shgr=(MYSQL_QUERY('SHOW GRANTS FOR "s"@"localhost"'));
$result= (mysql_fetch_array($shgr, MYSQL_NUM));
echo($result[0]);
Ещё раз спасибо всем ответившим !

PS: всё на деле оказалось не так уж и сложно, а я плакал...!
 
Сверху