Wednesday, May 6, 2009

Reset ROOT password in mysql

Use the following procedure for resetting the password for any MySQL root accounts on Linux. The instructions assume that you will start the server so that it runs using the Linux login account that you normally use for running the server. For example, if you run the server using the mysql login account, you should log in as mysql before using the instructions. (Alternatively, you can log in as root, but in this case you must start start mysqld with the –user=mysql option. If you start the server as root without using –user=mysql, the server may create root-owned files in the data directory, such as log files, and these may cause permission-related problems for future server startups. If that happens, you will need to either change the ownership of the files to mysql or remove them.)

Log on to your system as the Linux mysql user that the mysqld server runs as.
Locate the .pid file that contains the server’s process ID. The exact location and name of this file depend on your distribution, host name, and configuration. Common locations are /var/lib/mysql/, /var/run/mysqld/, and /usr/local/mysql/data/. Generally, the file name has an extension of .pid and begins with either mysqld or your system’s host name.

You can stop the MySQL server by sending a normal kill (not kill -9) to the mysqld process, using the path name of the .pid file in the following command:

kill ‘cat /mysql-data-directory/host_name.pid’

Note the use of backticks rather than forward quotes with the cat command; these cause the output of cat to be substituted into the kill command.
Create a text file and place the following statements in it. Replace the password with the password that you want to use.

UPDATE mysql.user SET Password=PASSWORD(’MyNewPass’) WHERE User=’root’;
FLUSH PRIVILEGES;

The UPDATE and FLUSH statements each must be written on a single line. The UPDATE statement resets the password for all existing root accounts, and the FLUSH statement tells the server to reload the grant tables into memory.
Save the file. For this example, the file will be named /home/me/mysql-init. The file contains the password, so it should not be saved where it can be read by other users.
Start the MySQL server with the special –init-file option:

mysqld_safe –init-file=/home/me/mysql-init &

The server executes the contents of the file named by the –init-file option at startup, changing each root account password.
After the server has started successfully, delete /home/me/mysql-init.
You should now be able to connect to MySQL as root using the new password.

Tuesday, May 5, 2009

Unblock with 'mysqladmin flush-hosts' Mysql 5 and greater

Many times we get this error due to

wrong authentication (username or password incorrect)
too many connections from same machine.

easiest way for this, is ..

clear with flush-hosts command. See http://dev.mysql.com/doc/refman/5.1/en/flush.html

STEPS for Linux

open terminal window type

mysqladmin -uroot -ppassword flush-hosts;

[Remember -uroot is your root name with a "-u" before it, and same for password "-p" before password]

You are done.


Another tip 1
------------------------------------------
Restarting MySQLd solves the problem. FLUSH HOSTS also wipes the internal DNS cache, so be careful with its use - a flood of reverse DNS lookups can severely limit your server’s speed!

open the terminal and type (for Linux)

/etc/init.d/mysql restart


Another tip 2 allow many connections
------------------------------------------
To increase the maximum connections that mysql allows, you must edit the file /etc/my.cnf. Log into the server as root and type

nano /etc/MYSQL/my.cnf

it will open the config file (depending upon your cnf file location change the path) and uncomment (remove #) to the following line with the allowed no of connections e.g.
max_connections=10000 
Now press CTRL+X and Yes (Y) to exit from terminal window. Now Type

/etc/init.d/mysql restart 
you will see on the terminal screen
Stopping MySQL database server mysqld: [ OK ]
Starting MySQL database server mysqld: [ OK ]
You are done.

CHECK THE SETTING IS PROPER OR NOT...

If you'd like to check to see if this setting was successfully applied, you may check using one of the following methods:
  1. login to mysql
    mysql -uadmin -ppassword
    or through mysql administrator tool (Go to tools->MySQL text Console), you will be at the "mysql>" prompt.

  2. Then give the command
    show variables like 'max_connections'; 

    make sure you put the semi-colon on the end. To exit mysql, use the "quit" command