Portál AbcLinuxu, 12. května 2025 19:15

Dotaz: Vytvoření mysql uživatele pomocí php

4.9.2010 14:21 caszo
Vytvoření mysql uživatele pomocí php
Přečteno: 999×
Odpovědět | Admin

Zdravím, snažím se pomocí PHP vytvořit v mysql uživatele (mám normálně rootovská práva)...

Zkoušel jsem toto:

$sql = 'CREATE USER \''.$login.'\'@\'localhost\' IDENTIFIED BY \''.$pass.'\';GRANT USAGE ON *.* TO \''.$login.'\'@\'localhost\' IDENTIFIED BY \''.$pass.'\'WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;CREATE DATABASE IF NOT EXISTS `'.$login.'`;GRANT ALL PRIVILEGES ON `'.$login.'`.* TO \''.$login.'\'@\'localhost\';';

Systém mi vyhodil že přidáno ale ani po obnově oprávnění v mysql uživatele nenajdu.... Díky za rady


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Jendа avatar 4.9.2010 14:32 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nedělá se tam ještě nějaké přídavné escapování, když dotaz databázi pokládáš?
Jendа avatar 4.9.2010 14:34 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php
Respektive jestli mysql_query($sql); vrátí 1 a pokud ne, tak si vypiš výstup funkce mysql_error();.
4.9.2010 14:47 caszo
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php

http://temp.centrumpc.net/fc.txt po zavolání fce se mi nic nevypíše (kromě echa sql a to je:

CREATE USER 'test'@'localhost' IDENTIFIED BY 'heslo123';GRANT USAGE ON *.* TO 'test'@'localhost' IDENTIFIED BY 'heslo123'WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;CREATE DATABASE IF NOT EXISTS `test`;GRANT ALL PRIVILEGES ON `test`.* TO 'test'@'localhost';

4.9.2010 15:22 caszo
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php
mysql_error(); mi vrací: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GRANT USAGE ON *.* TO 'aa'@'localhost' IDENTIFIED BY 'aa'WITH MAX_QUERIES_PER_HO' at line 1
4.9.2010 16:35 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php

IDENTIFIED BY 'aa'WITH MAX_QUERIES_PER_HO'
Nechybi mezi 'aa' a WITH mezera? (tedy IDENTIFIED BY \''.$pass.'\'<tady>Chybejici_mezera</tady>WITH MAX_QUERIES_PER_HOUR 0)

Dejv

Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
4.9.2010 21:59 caszo
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php
Nene, nepomohlo... :(
4.9.2010 22:20 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php

Pak uz me napada jedine jestli neni problem v tech "dvou hvezdickach". Misto

GRANT USAGE ON *.* TO \''.$login...
pouzit
GRANT USAGE ON * TO \''.$login...

Dejv

Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
5.9.2010 00:50 caszo
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php
taky nic ... :o(
Jendа avatar 5.9.2010 00:52 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php
A když ten SQL příkaz spustíš pomocí phpMyAdmina (máš-li) nebo řádkového MySQL klienta, tak to funguje?
5.9.2010 12:06 caszo
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php

Váš SQL-dotaz byl úspěšně vykonán

CREATE USER 'aa'@'localhost' IDENTIFIED BY 'aa';# MySQL vrátil prázdný výsledek (tj. nulový počet řádků).
GRANT USAGE ON * . * TO 'aa'@'localhost' IDENTIFIED BY 'aa' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;# MySQL vrátil prázdný výsledek (tj. nulový počet řádků).
CREATE DATABASE IF NOT EXISTS `aa` ;# Ovlivněné řádky: 1
GRANT ALL PRIVILEGES ON `aa` . * TO 'aa'@'localhost';# MySQL vrátil prázdný výsledek (tj. nulový počet řádků).

SQL kod (v php nejde):

CREATE USER 'aa'@'localhost' IDENTIFIED BY 'aa';GRANT USAGE ON *.* TO 'aa'@'localhost' IDENTIFIED BY 'aa' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;CREATE DATABASE IF NOT EXISTS `aa`;GRANT ALL PRIVILEGES ON `aa`.* TO 'aa'@'localhost';

Jendа avatar 5.9.2010 12:10 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php
Takže
if (mysql_query("CREATE USER 'aa'@'localhost' IDENTIFIED BY 'aa';GRANT USAGE ON *.* TO 'aa'@'localhost' IDENTIFIED BY 'aa' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;CREATE DATABASE IF NOT EXISTS `aa`;GRANT ALL PRIVILEGES ON `aa`.* TO 'aa'@'localhost';")) {
   echo ok;
}
napíše OK a databáze se nevytvoří? Zkusil bych se podívat na takové ty triviální chyby jako jestli se v tom skriptu připojuješ ke správnému databázovému stroji a tak :-).
5.9.2010 12:14 caszo
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php

function addmysqluser($user,$login,$pass)
{
$sql = 'CREATE USER \''.$login.'\'@\'localhost\' IDENTIFIED BY \''.$pass.'\';GRANT USAGE ON *.* TO \''.$login.'\'@\'localhost\' IDENTIFIED BY \''.$pass.'\' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;CREATE DATABASE IF NOT EXISTS `'.$login.'`;GRANT ALL PRIVILEGES ON `'.$login.'`.* TO \''.$login.'\'@\'localhost\';';
$akce = mysql_query($sql);
if($akce) echo "<div class=\"ok\"> <img src=\"data/im/ok.png\" alt=\"\" /> Podařilo se mi uživatele úspěšně přidat! Vytvátím DB...</div>";
else echo mysql_error();            
echo "<br /><br />";
echo $sql;
}

Jendа avatar 5.9.2010 12:19 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php
Spíš jestli bys to mohl spustit bez těch proměnných, s natvrdo zadanými údaji. Třeba máš zapnutou nějakou hrůzu typu magic_quotes.
5.9.2010 12:30 caszo
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php
zkusil sem to os mi poslal výš a ok se nevyíše... takže stejná chyba
5.9.2010 12:31 caszo
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php
může to být tím že už mám vybranou DB ve spojení?
4.9.2010 14:37 caszo
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php
Co tím máš na mysli?
5.9.2010 13:55 xHire | skóre: 21 | blog: Linuxovník
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nevím, zda to může mít vliv, ale PHPčková mysql_query vykonává pouze jeden SQL dotaz, takže ten velký uvedený dotaz bych rozdělil na 4 samostatné. Mám ten dojem, že i phpMyAdmin to tak dělá.

Také ve mě zrovna nebudí důvěru nastavování hesla v GRANT příkazu. To tam podle mě vůbec nepatří, a to nejen vzhledem k logice věci, že to heslo už uživatel nastavené má.
Kryptoměny a bločenka.
Tarmaq avatar 6.9.2010 14:47 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php
Presne to same me taky napadlo, mela by to byt ochrana pred SQL Injection.
mysql_query() sends a unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified link_identifier.
viz. dokumentace
Don't panic!
6.9.2010 15:09 caszo
Rozbalit Rozbalit vše Re: Vytvoření mysql uživatele pomocí php
Jes, díky! :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.