[MySQL] DB + User aanmaken
Is het mogelijk om d.m.v. php een database aan te maken (het liefst met een limiet van 5 MB).
En is het dan ook mogelijk om via php een user in de database aan te maken, met zelf gekozen rechten?
Groet
Newb
Nu wil ik eigenlijk alleen nog weten hoe ik een database met size limit aan kan maken...
Daar staat hoe je de maximale grote van een database op kunt vragen, maar hoe CREËER je een database, met een size limit.
Ik heb deze code, hij lijkt misschien wat lang, maar dat komt gewoon omdat ik alles even lekker uitgebreid heb neergezet:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
$username = 'test_username';
$database = 'test_database';
?>
<h2>Verbinding met database maken</h2>
<?php
if(mysql_connect('127.0.0.1', 'root', '***'))
{
echo 'Succesvol verbinding gemaakt met de host<br />';
}
if(mysql_select_db('mysql')) //MySQL is de database waarin de users staan
{
echo 'Succesvol verbinding gemaakt met de database<br />';
}
?>
<h2>Gebruiker toevoegen</h2>
<?php
$sql = "INSERT INTO user (host, user, password, select_priv, insert_priv, update_priv) VALUES ('localhost', '".$username."', PASSWORD('mypass'), 'Y', 'Y', 'Y')";
if(mysql_query($sql))
{
echo 'De gebruiker is succesvol toegevoegd';
}
else
{
echo 'De gebruiker is niet toegevoegd: '.mysql_error();
}
?>
<h2>Maak de database aan</h2>
<?php
$sql2 = "CREATE DATABASE ".$database;
if(mysql_query($sql2))
{
echo 'De database is succesvol aangemaakt';
}
else
{
echo 'De database kon niet worden aangemaakt: '.mysql_error();
}
?>
<h2>Rechten geven</h2>
<?php
$sql3 = "INSERT INTO db(host,
db,
user,
select_priv,
insert_priv,
update_priv,
delete_priv,
create_priv,
drop_priv,
index_priv,
alter_priv)
VALUES('localhost',
'".$database."',
'".$username."',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y')";
if(mysql_query($sql3))
{
echo 'De rechten zijn gegeven';
}
else
{
echo 'De rechten konden niet worden gegeven: '.mysql_error();
}
?>
<h2>Nieuwe connectie</h2>
<?php
if(mysql_connect('127.0.0.1', $username, 'mypass'))
{
echo 'Succesvol verbinding gemaakt met de host<br />';
}
if(mysql_select_db($database)) //MySQL is de database waarin de users staan
{
echo 'Succesvol verbinding gemaakt met de database<br />';
}
?>
$username = 'test_username';
$database = 'test_database';
?>
<h2>Verbinding met database maken</h2>
<?php
if(mysql_connect('127.0.0.1', 'root', '***'))
{
echo 'Succesvol verbinding gemaakt met de host<br />';
}
if(mysql_select_db('mysql')) //MySQL is de database waarin de users staan
{
echo 'Succesvol verbinding gemaakt met de database<br />';
}
?>
<h2>Gebruiker toevoegen</h2>
<?php
$sql = "INSERT INTO user (host, user, password, select_priv, insert_priv, update_priv) VALUES ('localhost', '".$username."', PASSWORD('mypass'), 'Y', 'Y', 'Y')";
if(mysql_query($sql))
{
echo 'De gebruiker is succesvol toegevoegd';
}
else
{
echo 'De gebruiker is niet toegevoegd: '.mysql_error();
}
?>
<h2>Maak de database aan</h2>
<?php
$sql2 = "CREATE DATABASE ".$database;
if(mysql_query($sql2))
{
echo 'De database is succesvol aangemaakt';
}
else
{
echo 'De database kon niet worden aangemaakt: '.mysql_error();
}
?>
<h2>Rechten geven</h2>
<?php
$sql3 = "INSERT INTO db(host,
db,
user,
select_priv,
insert_priv,
update_priv,
delete_priv,
create_priv,
drop_priv,
index_priv,
alter_priv)
VALUES('localhost',
'".$database."',
'".$username."',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y')";
if(mysql_query($sql3))
{
echo 'De rechten zijn gegeven';
}
else
{
echo 'De rechten konden niet worden gegeven: '.mysql_error();
}
?>
<h2>Nieuwe connectie</h2>
<?php
if(mysql_connect('127.0.0.1', $username, 'mypass'))
{
echo 'Succesvol verbinding gemaakt met de host<br />';
}
if(mysql_select_db($database)) //MySQL is de database waarin de users staan
{
echo 'Succesvol verbinding gemaakt met de database<br />';
}
?>
En dit resultaat krijg ik terug:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Verbinding met database maken
Succesvol verbinding gemaakt met de host
Succesvol verbinding gemaakt met de database
Gebruiker toevoegen
De gebruiker is succesvol toegevoegd
Maak de database aan
De database is succesvol aangemaakt
Rechten geven
De rechten zijn gegeven
Nieuwe connectie
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'test_username'@'localhost' (using password: YES) in F:\server\www\sql2.php on line 88
Succesvol verbinding gemaakt met de database
Succesvol verbinding gemaakt met de host
Succesvol verbinding gemaakt met de database
Gebruiker toevoegen
De gebruiker is succesvol toegevoegd
Maak de database aan
De database is succesvol aangemaakt
Rechten geven
De rechten zijn gegeven
Nieuwe connectie
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'test_username'@'localhost' (using password: YES) in F:\server\www\sql2.php on line 88
Succesvol verbinding gemaakt met de database
Alles gaat dus goed, tot het moment dat er verbinding gemaakt moet worden. Dan kan er opeens geen verbinding gemaakt worden.
Ook via PHPMyAdmin kan ik er niet in...
Iemand een idee wat er verkeerd is?
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
Maak van 127.0.0.1 eens localhost
Vraagje: Waarom gebruik je geen GRANT om de gebruikers (die je als users aanmeldt in de database) de juiste rechten te geven? Hiermee spijker je de boel volledig dicht! Tevens bestaat er dan geen kans dat door een foutje in jouw script de boel alsnog open staat.
Edit:
Ik heb nu dit:
Ik heb nu dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$sql = "GRANT USAGE ON *.* TO '".$username."'@'localhost' IDENTIFIED BY '****'WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0";
if(mysql_query($sql))
{
echo 'De gebruiker is succesvol toegevoegd';
}
else
{
echo 'De gebruiker is niet toegevoegd: '.mysql_error();
}
?>
$sql = "GRANT USAGE ON *.* TO '".$username."'@'localhost' IDENTIFIED BY '****'WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0";
if(mysql_query($sql))
{
echo 'De gebruiker is succesvol toegevoegd';
}
else
{
echo 'De gebruiker is niet toegevoegd: '.mysql_error();
}
?>
Om een gebruiker toe te voegen. Deze wordt ook keurig in mijn database bij "rechten" weergeven.
Echter als ik verbinding wil maken met de database (of dat nu via php of via PHPMyAdmin is) krijg ik geen toegang...
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
Verder is het van belang om voor 110% zeker te weten dat je de juiste user en het juiste wachtwoord gebruikt.
Frank schreef op 13.03.2007 20:50:
"krijg ik geen toegang..." En welke foutmelding krijg je daar op?
Verder is het van belang om voor 110% zeker te weten dat je de juiste user en het juiste wachtwoord gebruikt.
Verder is het van belang om voor 110% zeker te weten dat je de juiste user en het juiste wachtwoord gebruikt.
Gewoon de standaard melding:
Quote:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'test_username'@'localhost' (using password: YES) in F:\server\www\sql2.php on line 88
En ik ben er vrijwel zeker van dat ik de goeie username en password gebruik.
Daarbij kan je geen limits instellen. Wel kan je een php/perl scriptje maken die dat voor jou kijkt, en als er een probleem is je CREATE en INSERT rechten weg neemt. Ik heb het ook eens gevraagd. Kijk maar bij mijn topics.
Ik post hem zo even in de scriptlib.