lundi 11 octobre 2010

MYSQL -- Commandes de base

To login (from unix shell) use -h only if needed.

# [mysql dir]/bin/mysql -h hostname -u root -p

Create a database on the sql server.

mysql> create database [databasename];

List all databases on the sql server.

mysql> show databases;

Switch to a database.

mysql> use [db name];

To see all the tables in the db.

mysql> show tables;

To see database's field formats.

mysql> describe [table name];

To delete a db.

mysql> drop database [database name];

To delete a table.

mysql> drop table [table name];

Show all data in a table.

mysql> SELECT * FROM [table name];

Returns the columns and column information pertaining to the designated table.

mysql> show columns from [table name];

Show certain selected rows with the value "whatever".

mysql> SELECT * FROM [table name] WHERE [field name] = "whatever";

Show all records containing the name "Bob" AND the phone number '3444444'.

mysql> SELECT * FROM [table name] WHERE name = "Bob" AND phone_number = '3444444';

Show all records not containing the name "Bob" AND the phone number '3444444' order by the phone_number field.

mysql> SELECT * FROM [table name] WHERE name != "Bob" AND phone_number = '3444444' order by phone_number;

Show all records starting with the letters 'bob' AND the phone number '3444444'.

mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444';

Show all records starting with the letters 'bob' AND the phone number '3444444' limit to records 1 through 5.

mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444' limit 1,5;

Use a regular expression to find records. Use "REGEXP BINARY" to force case-sensitivity. This finds any record beginning with a.

mysql> SELECT * FROM [table name] WHERE rec RLIKE "^a";

Show unique records.

mysql> SELECT DISTINCT [column name] FROM [table name];

Show selected records sorted in an ascending (asc) or descending (desc).

mysql> SELECT [col1],[col2] FROM [table name] ORDER BY [col2] DESC;

Return number of rows.

mysql> SELECT COUNT(*) FROM [table name];

Sum column.

mysql> SELECT SUM(*) FROM [table name];

Join tables on common columns.

mysql> select lookup.illustrationid, lookup.personid,person.birthday from lookup left join person on lookup.personid=person.personid=statement to join birthday in person table with primary illustration id;

Creating a new user. Login as root. Switch to the MySQL db. Make the user. Update privs.

# mysql -u root -p
mysql> use mysql;
mysql> INSERT INTO user (Host,User,Password) VALUES('%','username',PASSWORD('password'));
mysql> flush privileges;

Change a users password from unix shell.

# [mysql dir]/bin/mysqladmin -u username -h hostname.blah.org -p password 'new-password'

Change a users password from MySQL prompt. Login as root. Set the password. Update privs.

# mysql -u root -p
mysql> SET PASSWORD FOR 'user'@'hostname' = PASSWORD('passwordhere');
mysql> flush privileges;

Recover a MySQL root password. Stop the MySQL server process. Start again with no grant tables. Login to MySQL as root. Set new password. Exit MySQL and restart MySQL server.

# /etc/init.d/mysql stop
# mysqld_safe --skip-grant-tables &
# mysql -u root
mysql> use mysql;
mysql> update user set password=PASSWORD("newrootpassword") where User='root';
mysql> flush privileges;
mysql> quit
# /etc/init.d/mysql stop
# /etc/init.d/mysql start

Set a root password if there is on root password.

# mysqladmin -u root password newpassword

Update a root password.

# mysqladmin -u root -p oldpassword newpassword

Allow the user "bob" to connect to the server from localhost using the password "passwd". Login as root. Switch to the MySQL db. Give privs. Update privs.

# mysql -u root -p
mysql> use mysql;
mysql> grant usage on *.* to bob@localhost identified by 'passwd';
mysql> flush privileges;

Give user privilages for a db. Login as root. Switch to the MySQL db. Grant privs. Update privs.

# mysql -u root -p
mysql> use mysql;
mysql> INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES ('%','databasename','username','Y','Y','Y','Y','Y','N');
mysql> flush privileges;

or

mysql> grant all privileges on databasename.* to username@localhost;
mysql> flush privileges;

To update info already in a table.

mysql> UPDATE [table name] SET Select_priv = 'Y',Insert_priv = 'Y',Update_priv = 'Y' where [field name] = 'user';

Delete a row(s) from a table.

mysql> DELETE from [table name] where [field name] = 'whatever';

Update database permissions/privilages.

mysql> flush privileges;

Delete a column.

mysql> alter table [table name] drop column [column name];

Add a new column to db.

mysql> alter table [table name] add column [new column name] varchar (20);

Change column name.

mysql> alter table [table name] change [old column name] [new column name] varchar (50);

Make a unique column so you get no dupes.

mysql> alter table [table name] add unique ([column name]);

Make a column bigger.

mysql> alter table [table name] modify [column name] VARCHAR(3);

Delete unique from table.

mysql> alter table [table name] drop index [colmn name];

Load a CSV file into a table.

mysql> LOAD DATA INFILE '/tmp/filename.csv' replace INTO TABLE [table name] FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (field1,field2,field3);

Dump all databases for backup. Backup file is sql commands to recreate all db's.

# [mysql dir]/bin/mysqldump -u root -ppassword --opt >/tmp/alldatabases.sql

Dump one database for backup.

# [mysql dir]/bin/mysqldump -u username -ppassword --databases databasename >/tmp/databasename.sql

Dump a table from a database.

# [mysql dir]/bin/mysqldump -c -u username -ppassword databasename tablename > /tmp/databasename.tablename.sql

Restore database (or database table) from backup.

# [mysql dir]/bin/mysql -u username -ppassword databasename < /tmp/databasename.sql

Create Table Example 1.

mysql> CREATE TABLE [table name] (firstname VARCHAR(20), middleinitial VARCHAR(3), lastname VARCHAR(35),suffix VARCHAR(3),officeid VARCHAR(10),userid VARCHAR(15),username VARCHAR(8),email VARCHAR(35),phone VARCHAR(25), groups VARCHAR(15),datestamp DATE,timestamp time,pgpemail VARCHAR(255));

Create Table Example 2.

mysql> create table [table name] (personid int(50) not null auto_increment primary key,firstname varchar(35),middlename varchar(50),lastnamevarchar(50) default 'bato');

Manage Users : 

To show the users in a MySQL database, first log into your MySQL server as an administrative user, then run this MySQL query:
select * from mysql.user;
This MySQL users query shows a large listing of MySQL user information, including MySQL permission information, so you may want to trim down some of the fields to display. You can get a listing of the fields in the mysql.user table by running this command:
desc mysql.user;
On my current MySQL server this shows the following 37 columns of information, as shown here:
mysql> desc mysql.user;
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field                 | Type                              | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host                  | char(60)                          | NO   | PRI |         |       | 
| User                  | char(16)                          | NO   | PRI |         |       | 
| Password              | char(41)                          | NO   |     |         |       | 
| Select_priv           | enum('N','Y')                     | NO   |     | N       |       | 
| Insert_priv           | enum('N','Y')                     | NO   |     | N       |       | 
| Update_priv           | enum('N','Y')                     | NO   |     | N       |       | 
| Delete_priv           | enum('N','Y')                     | NO   |     | N       |       | 
| Create_priv           | enum('N','Y')                     | NO   |     | N       |       | 
| Drop_priv             | enum('N','Y')                     | NO   |     | N       |       | 
| Reload_priv           | enum('N','Y')                     | NO   |     | N       |       | 
| Shutdown_priv         | enum('N','Y')                     | NO   |     | N       |       | 
| Process_priv          | enum('N','Y')                     | NO   |     | N       |       | 
| File_priv             | enum('N','Y')                     | NO   |     | N       |       | 
| Grant_priv            | enum('N','Y')                     | NO   |     | N       |       | 
| References_priv       | enum('N','Y')                     | NO   |     | N       |       | 
| Index_priv            | enum('N','Y')                     | NO   |     | N       |       | 
| Alter_priv            | enum('N','Y')                     | NO   |     | N       |       | 
| Show_db_priv          | enum('N','Y')                     | NO   |     | N       |       | 
| Super_priv            | enum('N','Y')                     | NO   |     | N       |       | 
| Create_tmp_table_priv | enum('N','Y')                     | NO   |     | N       |       | 
| Lock_tables_priv      | enum('N','Y')                     | NO   |     | N       |       | 
| Execute_priv          | enum('N','Y')                     | NO   |     | N       |       | 
| Repl_slave_priv       | enum('N','Y')                     | NO   |     | N       |       | 
| Repl_client_priv      | enum('N','Y')                     | NO   |     | N       |       | 
| Create_view_priv      | enum('N','Y')                     | NO   |     | N       |       | 
| Show_view_priv        | enum('N','Y')                     | NO   |     | N       |       | 
| Create_routine_priv   | enum('N','Y')                     | NO   |     | N       |       | 
| Alter_routine_priv    | enum('N','Y')                     | NO   |     | N       |       | 
| Create_user_priv      | enum('N','Y')                     | NO   |     | N       |       | 
| ssl_type              | enum('','ANY','X509','SPECIFIED') | NO   |     |         |       | 
| ssl_cipher            | blob                              | NO   |     | NULL    |       | 
| x509_issuer           | blob                              | NO   |     | NULL    |       | 
| x509_subject          | blob                              | NO   |     | NULL    |       | 
| max_questions         | int(11) unsigned                  | NO   |     | 0       |       | 
| max_updates           | int(11) unsigned                  | NO   |     | 0       |       | 
| max_connections       | int(11) unsigned                  | NO   |     | 0       |       | 
| max_user_connections  | int(11) unsigned                  | NO   |     | 0       |       | 
+-----------------------+-----------------------------------+------+-----+---------+-------+
37 rows in set (0.10 sec)

For most cases you'll probably want to limit your MySQL users information to a few important columns, something like this:

select host, user, password from mysql.user;
Sources : 

Transférer cacti vers un autre serveur

- Old Server:

1. Stop Cacti from running by removing or moving the crontab job from /etc/cron.d. I just moved it to root's home area in case I need it again.

2. Backup the cacti database:
mysqldump -u root -p cacti > cacti_export.sql
(-u username -p prompt me for the password database_name > sql file)

3. Copy the cacti_export.sql file to the new server.

4. Copy the rra, scripts, and any other modified files to the corresponding directory on the new server.
scp -r /var/www/cacti/rra/* root@violet:/var/www/html/cacti/rra/


- New Server:

1. Create the cacti databases, import old database, and set appropriate permissions.

mysqladmin --user=root create cacti
mysql -u root -p cacti < /root/cacti_export.sql mysql -u root -p cacti mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'the password of cactiuser';
mysql> flush privileges;
mysql> quit;


2. Verify the permissions are set correctly on the rra/ and log/ directories in cacti's home area.
chown -R cactiuser:cactiuser rra/ log/
It never hurts to make sure, especially after you have copied files from another server.

3. I then go to the log/ directory and tail -f the cacti.log and watch for the next crontab job to run and hopefully see good results.

I think that is all I had to do, but this is the best I can remember. If you have SNMP access lists on your devices or any firewall rules in your path, always make sure to change them to reflect the new server.

EXTRAS:

I install the cacti plugin architecture, www.cactiusers.org, primarily the thold plugin. The steps are easy to follow, so I leave you to follow their documentation.


Source : http://cainsplace.blogspot.com/2007/05/moving-cacti-from-one-linux-server-to.html

jeudi 30 septembre 2010

Musique à décourvir

As if We Existed de Sol.illaquists of Sound

KMD SMOKING THAT SHIT

mercredi 29 septembre 2010

Synchronizing The System Clock On CentOS, RHEL

How Do I Setup The NTP Client?

While there are NTP clients available for all operating systems, we’re going to focus on CentOS Linux and Red Hat Enterprise Linux. This is faily easy:
1. First you got to install the NTP package. I suggest you try using YUM for this task:
# yum install ntp
2. Then you want to have the NTP service started at boot time:
# chkconfig --levels 235 ntpd on
3. Specify the NTP server you’ll be synchronizing with. I suggest you use the NTP server pool from ntp.org:
# ntpdate 0.pool.ntp.org
4. Start the NTP service:
# service ntpd start
What’s interesting with the NTP protocol is that if the network connection is temporarily unavailable, NTP can use measurements from the past to estimate current time and error.
On MS Windows server, you can use the W32Time service. It’s been a long time since I’ve configured this on MS Windows so I’ll dig that out and post it here when I find it.

Installer Opsview sur CentOS

https://docs.opsview.com/doku.php?id=opsview-community:centos-installation

mardi 28 septembre 2010

Apache Erreur 403 : Directory index forbidden

Contexte

En interrogeant une url, apache retourne une erreur "403 forbidden" ;
En regardant à la fin du fichier log d'erreur, on trouve une erreur "Directory index forbidden" :

user@machine: ~ $ tail /var/log/apache2/error.log
[...]
Thu May 29 07:11:08 2008] [error] [client XXX.XXX.XXX.XXX] Directory index forbidden by Options directive: /var/www/repertoire


D'autres raisons d'erreur 403 sont expliquées dans le post :
D'où vient l'erreur "403 Forbidden" d'apache ?.

Résolution

Deux possibilités pour résoudre cette erreur :
  • Créer une fichier d'index (index.html) dans le repertoire incriminé (dans notre exemple /var/www/repertoire)
     
    user@machine: ~ $ cd /var/www/repertoire
    user@machine:repertoire $ nano index.html
    Contenu de ma page index 
     
  • Autoriser les indexes automatiques dans la configuration d'apache. Ca se fait via la directive Options +Indexes pour le repertoire /var/www/repertoire/ :
     
    user@machine: ~ $ nano /etc/apache2/conf.d/index_auto.conf
    <Directory /var/www/repertoire>
            Options +Indexes
    </Directory>
    

    Pour Redhat, Fedora ou Mandriva, il faut éditer le fichier /etc/httpd/conf/httpd.conf

    Si vous n'avez pas les droits d'accéder à la configuration d'apache, vous pouvez utiliser le fichier de délégation de configuration .htaccess :
     
    user@machine:~ $ cd /var/www/repertoire
    user@machine:repertoire $ nano .htaccess
    Options +Indexes
    

    Explications

    Lorsqu'une url correspondant à un répertoire est interrogé, apache y recherche un fichier d'index. Ces fichiers sont définis dans la conf d'apache par la directive DirectoryIndex, qui a comme valeur en général index.html et index.php.
    Si aucun des fichiers n'est présent dans le répertoire, apache regarde si il a les droits pour générer automatiquement un index (qui contiendra le listing des fichiers du répertoire). Les droits sont définis par la directive Options +Indexes encadré par une balise conditionnelle Directory si on passe par un fichier de configuration apache.
    La directive est mise telle quelle dans le fichier .htaccess. Ce fichier permet de ré-écrire des éléments de configuration depuis un répertoire de publication.

    source : http://tutos.tangui.eu.org/6-apache-erreur-403-directory-index-forbidden