Avatar billede dennism Nybegynder
12. august 2005 - 20:15 Der er 34 kommentarer og
1 løsning

mySQL: flere brugere

Jeg sidder med en MySQL Server 4.1. Jeg har kun en root-user, men ønsker nu at oprette nogle flere brugere. Hvordan gør man det?
Avatar billede arne_v Ekspert
12. august 2005 - 20:17 #1
Avatar billede dennism Nybegynder
12. august 2005 - 20:34 #2
Jeg skriver følgende:
GRANT ALL PRIVILEGES ON *.* TO 'demaweb.dk'@'localhost' IDENTIFIED BY 'pass' WITH GRANT OPTION

Selvom den ik melder nogen fejl eller noget, så kan jeg ik logge på phpmyadmin med disse data. Og logger jeg ind som root og ser tabellen user i mysql databasen, er der stadig kun én række, nemlig root.
Avatar billede arne_v Ekspert
12. august 2005 - 20:48 #3
mystisk

den virker fint hos mig

kan du ikke lige prøve ved mysql prompten og se om det virker ?
Avatar billede dennism Nybegynder
12. august 2005 - 22:41 #4
Hvad skal jeg prøve ved mysql prompten?
Avatar billede arne_v Ekspert
12. august 2005 - 22:44 #5
select host,user from user;

grant ...

select host,user from user;
Avatar billede dennism Nybegynder
12. august 2005 - 22:46 #6
Hvis jeg skriver "SELECT host,user FROM user" sker der ingen ting..den laver bare en ny linie :(
Avatar billede arne_v Ekspert
12. august 2005 - 22:48 #7
har du husket semikolonnet til sidst ?
Avatar billede dennism Nybegynder
12. august 2005 - 22:50 #8
Godt..så får jeg én enkelt række - hvor user=root.
Men hvorfor kan jeg så ik tilføje? :(
Avatar billede arne_v Ekspert
12. august 2005 - 22:52 #9
og hvis du laver en grant som ovenfor (med semikolon)

og laver samme kommando bagefter ?
Avatar billede dennism Nybegynder
12. august 2005 - 22:53 #10
Hmm..så bliver de indsat. Men kan det passe at "demaweb_dk" og "demaweb.dk" er ugyldige brugernavne? Kan nemlig ik logge på phpmyadmin med dem.
Avatar billede dennism Nybegynder
12. august 2005 - 22:57 #11
Hmm..mine brugere virker kun hvis jeg opretter dem med grant.
Laver jeg dem med "INSERT INTO user (Host,User,Password) VALUES('localhost','test','kode');" så virker de ikke, selvom de eksisterer i databasen. Har du oplevet det før?
Avatar billede arne_v Ekspert
12. august 2005 - 23:00 #12
jeg mener at bør bruge GRANT

ellers skal du kalde PASSWORD funktionen, huske en million felter og
flushe bagefter
Avatar billede dennism Nybegynder
12. august 2005 - 23:02 #13
Oki..så holder jeg mig til GRANT :)
Avatar billede dennism Nybegynder
12. august 2005 - 23:02 #14
Du må godt lige smide et svar :)
Avatar billede arne_v Ekspert
12. august 2005 - 23:04 #15
ok
Avatar billede dennism Nybegynder
11. september 2005 - 13:36 #16
Jeg har netop læst denne side, som fortæller hvordan man slette bruger:
http://dev.mysql.com/doc/mysql/en/drop-user.html

Jeg forsøger derfor følgende:
mysql_query("DROP USER demaweb_dk");

Men brugeren bliver ikke slettet. Kan du forklare hvorfor?
Avatar billede arne_v Ekspert
11. september 2005 - 14:07 #17
hvilken version af MySQL bruger du ?
Avatar billede dennism Nybegynder
11. september 2005 - 14:41 #18
mysql-4.1.14.

Er der ik nyeste?
Avatar billede arne_v Ekspert
11. september 2005 - 14:44 #19
nyeste ikke beta

men citat fra dit eget link:

From MySQL 4.1.1 to 5.0.1, DROP USER  deletes only MySQL accounts that don't have any privileges. In these MySQL versions, it serves only to remove each account record from the user table. To remove a MySQL account, you should use the following procedure, performing the steps in the order shown:

  1.

      Use SHOW GRANTS to determine what privileges the account has. See Section 13.5.4.10, “SHOW GRANTS Syntax”.
  2.

      Use REVOKE to revoke the privileges displayed by SHOW GRANTS. This removes records for the account from all the grant tables except the user table, and revokes any global privileges listed in the user table. See Section 13.5.1.3, “GRANT and REVOKE Syntax”.
  3.

      Delete the account by using DROP USER to remove the user table record.
Avatar billede dennism Nybegynder
11. september 2005 - 14:47 #20
Er der ik en nemmere måde at gøre det på?
Avatar billede arne_v Ekspert
11. september 2005 - 15:33 #21
tror jeg ikke
Avatar billede dennism Nybegynder
11. september 2005 - 15:36 #22
Kan du give et eksempel på, hvordan det skal se ud?
Avatar billede arne_v Ekspert
11. september 2005 - 16:09 #23
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.10a-nt-max

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use test;
Database changed
mysql> GRANT SELECT ON test.t1 TO 'dennis'@'%' IDENTIFIED BY 'hemmeligt';
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS FOR 'dennis'@'%';
+-------------------------------------------------------------------------------------------------------+
| Grants for dennis@%                                                                                  |
+-------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dennis'@'%' IDENTIFIED BY PASSWORD '*656AEF9223A89D65A9F400BB4A5454AB0A800DD4' |
| GRANT SELECT ON `test`.`t1` TO 'dennis'@'%'                                                          |
+-------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> REVOKE ALL PRIVILEGES ON test.t1 FROM 'dennis'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS FOR 'dennis'@'%';
+-------------------------------------------------------------------------------------------------------+
| Grants for dennis@%                                                                                  |
+-------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dennis'@'%' IDENTIFIED BY PASSWORD '*656AEF9223A89D65A9F400BB4A5454AB0A800DD4' |
+-------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> DROP USER 'dennis'@'%';
Query OK, 0 rows affected (0.02 sec)

mysql> SHOW GRANTS FOR 'dennis'@'%';
ERROR 1141 (42000): There is no such grant defined for user 'dennis' on host '%'
Avatar billede dennism Nybegynder
11. september 2005 - 16:44 #24
Kan jeg ik bare lave en normal query, hvor jeg sletter brugeren i mysql.user? og databasen i mysql.db?
Avatar billede arne_v Ekspert
11. september 2005 - 17:01 #25
måske

men medmindre du har meget gode grunde til at gøre det andereldes, så ville jeg gøre
som MySQL anbefaler
Avatar billede dennism Nybegynder
11. september 2005 - 17:04 #26
Jeg er ved at lave et system hvor jeg kan oprette og slette bruger. Det bliver vist lidt problematisk, hvis det skal gøres på ovenstående måde.
Avatar billede arne_v Ekspert
11. september 2005 - 17:08 #27
det er vel til at kode sig ud af

men ellers så prøv og slet i tabeller

jeg er bare ret sikker på at GRANT/REVOKE er mere stabil over tid end
direkte adgang til MySQL system tabeller
Avatar billede dennism Nybegynder
11. september 2005 - 17:14 #28
Noget du vil hjælpe mig med at kode mig ud af?
Har brugernavnet på den bruger der skal slettet i $_GET[delete]
Avatar billede arne_v Ekspert
11. september 2005 - 17:19 #29
$user = $_GET[delete];
$showgrants = "SHOW GRANTS FOR $user";
udfør query og for hver række: tag værdi erstat GRANT->REVOKE og TO->FROM og udfør
$dropuser = "DROP USER $user";
udfør query
Avatar billede dennism Nybegynder
11. september 2005 - 17:22 #30
Hvad er det for nogle rækker, som queryen skal køres for?
Avatar billede arne_v Ekspert
11. september 2005 - 17:26 #31
de rækker som "SHOW GRANTS FOR $user" returnerer
Avatar billede dennism Nybegynder
11. september 2005 - 18:19 #32
Jeg har:

$showgrants = mysql_query("SHOW GRANTS FOR $_GET[delete]");
echo"$showgrants<br>";

Men min echo returnerer intet.
Avatar billede arne_v Ekspert
11. september 2005 - 19:01 #33
retur værdi for mysql_query kan da ikke vises ??
Avatar billede dennism Nybegynder
11. september 2005 - 19:02 #34
Så forstår jeg ikke helt, hvordan du har tænkt dig at klare jobbet?
Avatar billede arne_v Ekspert
11. september 2005 - 21:08 #35
præcist ligesom med alle andre mysql queruis skal man da kalde
mysql_fetch_array eller mysql_result
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester