Re: Variable Expansion Using MySQL Client and .sql Files

2010-07-30 Thread Todd E Thomas

Simple - brilliant. I've modified to cat a temporary script...

1) cat the file as suggested:
cat  ~/payload/scripts/create_mysqldb.sql  EOF
###---
### Display the current user
###---
create database puppet;


###---
### Display all default accounts
###---
USE puppet;


###---
### Remove anonymous accounts
###---
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER ON puppet.* TO 
'admin'@'localhost' IDENTIFIED BY '$PASSWD_PRIV_ROOT';

(variables are expanded)

###---
### Verify new admin account was added
###---
SELECT 
user,Host,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Alter_priv 
from mysql.db;

EOF

2) Execute the script

3) Remove the script
rm -f ~/payload/scripts/create_mysqldb.sql

It is often the simplest things that are most beautiful. Thanks for 
pulling my head out :D



TT







On 07/29/2010 03:19 PM, Travis Ard wrote:

mysqlEOF
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER ON concrete5.db TO 
'admin'@'localhost' IDENTIFIED BY '$PASSWD_PRIV_ROOT';
EOF
   


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/mysql?unsub=arch...@jab.org



Re: Automate Install/Configuration of MySQL on Linux

2010-07-29 Thread Todd E Thomas

To answer both emails...

My first install is Puppet :)

1) I have many clients (schools with Macs/Linux) that could use this 
package. This is in the works - good call.


For the sake of DRP (Disaster Recovery Planning) I automate all of my 
installs on the 1% off-chance that my backups are partially fouled for 
some reason.


2) I used the .sql file that you recommended and wow - it's so much 
easier than expect.


Once I had the right key-words (mysql .sql script) Google returned the 
right pages:


4.5.1.4. Executing SQL Statements from a Text File
http://dev.mysql.com/doc/refman/5.0/en/batch-commands.html

The problem I have now is variable substitution. But, that's another thread.

Thanks guys,

TT





On 07/27/2010 11:40 PM, Andrés Tello wrote:
just place all your sql sentences in a file, setup the database and 
then use:


mysql -uroot -hlocalhost  file_with_allsql_you_need.sql
or
cat file_file_with_allsql_you_need.sql  | mysql -u root -hlocalhost

and you are done.


On Tue, Jul 27, 2010 at 3:56 PM, Todd E Thomas 
todd_...@ssiresults.com mailto:todd_...@ssiresults.com wrote:


I'm looking for automation direction...

I've found many packages that sit on top of MySQL. For the
purposes of consistency I'd like to automate these installs.

I've been able to automate the install and configuration of
everything except the mysql part.

I'm using CentOS 5.5. Installing/verifying is no big deal.

It's the MySQL configuration that's holding me up.

Basically I've created an expect script. It works 99% but it's a
PITA to finish. Here's what I'd like to accomplish:
 *Set the default admin password
   # mysqladmin -u root password 'root-password'

 *login to mysql
   mysql mysql -u root -p

 *Drop the anonymous accounts
   mysql DELETE FROM mysql.user WHERE user = '';

 *Sync all of the root passwords
   mysql UPDATE mysql.user SET Password =
PASSWORD('root-password') WHERE User = 'root';

 *Remove the test database:
   mysql  drop database test;


In another script I would like to create databases for specific
packages. EG:
Concrete5, for example needs:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER ON
concrete5.db TO 'admin'@'localhost' IDENTIFIED BY 'admin-password';



If there is a better way to do this than using expect I would
greatly appreciate any pointers in the right direction. Bash is
comfortable for me and perl is within reach. I'm not much versed
in anything else right now.


--
Thanks for the assist,

Todd E Thomas
It's a frail music knits the world together.
-Robert Dana

-- 
MySQL General Mailing List

For list archives: http://lists.mysql.com/mysql
To unsubscribe:
http://lists.mysql.com/mysql?unsub=mr.crip...@gmail.com




Variable Expansion Using MySQL Client and .sql Files

2010-07-29 Thread Todd E Thomas

Hey all,

I've found many packages that sit on top of MySQL for various clients. 
For the purposes of consistency I'd like to automate these installs. 
I've been directed towards using .sql files and they work great.


The trouble I'm having now is that I would like to secure the 
installation but variable expansion isn't clicking for me.


My setup is fairly straight-forward:

I have a single installer script that calls all other scripts. This is 
how it works:
1) Source in all global environment variables from a working file: 
1_GLOBAL_ENV.sh

2) execute script to create mysql db
3) secure mysql

. /root/payload/1_GLOBAL_ENV.sh
...
###---
### Configure MySQL
###---
set -x
mysql -v  ${INST_SCRIPTS}/mysqld/secure_mysqld.sql
...
mysql -v  ${INST_SCRIPTS}/mysqld/create_db.sql
...
---

The create_db.sql should be similar to this:
Concrete5, for example needs:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER ON 
concrete5.db TO 'admin'@'localhost' IDENTIFIED BY '$PASSWD_PRIV_ROOT';

---

The secure_mysqld.sql script is fairly simple as well:

# Display the current user:
select user();

# Display all default accounts:
SELECT User,Host,password FROM mysql.user;

# Remove anonymous accounts:
DELETE FROM mysql.user WHERE user = '';

# Display all remaining accounts:
SELECT User,Host,password FROM mysql.user;

# Sync root passowrds:
UPDATE mysql.user SET Password = PASSWORD('$PASSWD_PRIV_ROOT') WHERE 
User = 'root';


exit
---

It all works pretty well. Variable expansion is the problem. For now all 
of my other scripts substitute $PASSWD_PRIV_ROOT (from my 
1_GLOBAL_ENV.sh) for the actual password. The *.sql scripts do not.


If anyone can shed some light on this I would appreciate the help.

--
Thanks for the assist,

Todd E Thomas
C: 515.778.6913
It's a frail music knits the world together.
-Robert Dana


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/mysql?unsub=arch...@jab.org



Automate Install/Configuration of MySQL on Linux

2010-07-27 Thread Todd E Thomas

I'm looking for automation direction...

I've found many packages that sit on top of MySQL. For the purposes of 
consistency I'd like to automate these installs.


I've been able to automate the install and configuration of everything 
except the mysql part.


I'm using CentOS 5.5. Installing/verifying is no big deal.

It's the MySQL configuration that's holding me up.

Basically I've created an expect script. It works 99% but it's a PITA to 
finish. Here's what I'd like to accomplish:

  *Set the default admin password
# mysqladmin -u root password 'root-password'

  *login to mysql
mysql mysql -u root -p

  *Drop the anonymous accounts
mysql DELETE FROM mysql.user WHERE user = '';

  *Sync all of the root passwords
mysql UPDATE mysql.user SET Password = PASSWORD('root-password') 
WHERE User = 'root';


  *Remove the test database:
mysql  drop database test;


In another script I would like to create databases for specific 
packages. EG:

Concrete5, for example needs:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER ON 
concrete5.db TO 'admin'@'localhost' IDENTIFIED BY 'admin-password';




If there is a better way to do this than using expect I would greatly 
appreciate any pointers in the right direction. Bash is comfortable for 
me and perl is within reach. I'm not much versed in anything else right now.



--
Thanks for the assist,

Todd E Thomas
It's a frail music knits the world together.
-Robert Dana

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/mysql?unsub=arch...@jab.org