Wow, thanks Christa. Excellent idea, (and a very thorough response!) The only problems is it limits things to MySQL. I was hoping the code could be database independent (excepting of course the driver)
This is great. Such timely feedback late on a Friday! This is my first post on this list...Thanks everyone. On 10/18/02 at 2:40 PM, [EMAIL PROTECTED] (Hastie, Christa) wrote: > Well, perhaps you should just connect to the standard 'mysql' db that > holds the 'db' and 'users' tables, then create the database using > '$dbh->do' and then add permissions to the 'mysql' db 'db' and > 'users' tables so the database can be accessed via the new > permissions set in the 'mysql' db... > > $dbh = DBI->connect("DBI:mysql:mysql;host=$db_host", $db_user, > $db_password); $dbh->do("CREATE DATABASE '$database_name'"); > > $dbh->do("insert into user (host, user, password, select_priv, > insert_priv, update_priv, delete_priv, create_priv, drop_priv, > reload_priv, shutdown_priv, process_priv, file_priv, grant_priv, > references_priv, index_priv, alter_priv) values ('$ip', '$user', > password('$pass'), > 'y','y','y','y','y','y','y','y','y','y','y','y','y','y')"); > > $dbh->do("insert into db (host, db, user, select_priv, insert_priv, > update_priv, delete_priv, create_priv, drop_priv, grant_priv, > references_priv, index_priv, alter_priv) values > ('$ip','$database_name','$user','Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', > 'N', 'N', 'Y')"); > > $dbh->do("flush privileges"); > $dbh->disconnect(); > > -----Original Message----- > From: Andrew Brosnan [mailto:andrew@;broscom.com] > Sent: Friday, October 18, 2002 2:23 PM > To: Jeff Zucker > Cc: dbi-users > Subject: Re: Create database > > > On 10/18/02 at 2:10 PM, [EMAIL PROTECTED] (Jeff Zucker) wrote: > > > Andrew Brosnan wrote: > > > > > On 10/18/02 at 4:26 PM, [EMAIL PROTECTED] (Hardy Merrill) wrote: > > > > > >>What database are you using? > > >> > > > Not sure why it would matter, but MySQL. > > > > > > Yes it matters. This works for me using MySQL: > > > > my $existing_db = $your_old_db_here; > > my $new_db = $your_new_db_here; > > my $dbh = DBI->connect("dbi:mysql:database=$existing_db" ...); > > $dbh->do("CREATE DATABASE $new_db"); > > $dbh->do("USE $newdb"); > > # commands to create and query tables in $new_db > > > > -- > > Jeff > > > > > Yes Jeff, I thought the same thing. But that won't work for me in this case. > I need to be able to create a new db without assuming that there is an > existing one (or at least I might not know what it is). > > What I really need is a way to execute from dbi, what I might normally do > via the shell: > > CREATE DATABASE DatabaseName; > > > Yes it matters. > > I assume of course that I would change db drivers in my script as needed, > but I'd otherwise like the code to be dbi(data base independant) > > Thanks!! > > Any other thoughts? > > Andrew >