Take the 2-minute tour ×
Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. It's 100% free, no registration required.

How do you test MySQL credentials from the command line on a Linux server?

share|improve this question

3 Answers 3

up vote 2 down vote accepted

@Phil's Answer and @Mr.Brownstone's Answer should suffice for your question, so +1 for both of them.

For the following, let's assume you are logging in with username myuser

Once you have connected to mysql, you should run the following query:

SELECT USER(),CURRENT_USER();
  • USER() reports how you attempted to authenticate in MySQL
  • CURRENT_USER() reports how you were allowed to authenticate in MySQL

Sometimes, they are different. This may give you insight into why you are allowed to login to mysql.

Here is another query you need to run:

SELECT CONCAT('''',user,'''@''',host,'''') dbuser,password
FROM mysql.user WHERE user='myuser';

This will show you the ways in which you are allowed to login as myuser.

If you see 'myuser'@'localhost', then you can authenticate from within the DB Server

If you see 'myuser'@'127.0.0.1' and do not see 'myuser'@'localhost', then you can authenticate from within the DB Server again but you must specify the --protocol=tcp from the command line.

If you see 'myuser'@'%', then you can do remote logins from any server.

If you see 'myuse'r@'10.20.30,%', then you can do remote logins only the from 10.20.30.% netblock.

Once you see what 'mysql.user' has for your user, you may want to allow or restrict myuser from logggin in one way and not the other.

If you simply want to check if the password for myuser is whateverpassword, you can do the following:

SELECT COUNT(1) Password_is_OK FROM mysql.user
WHERE user='myuser'
AND password=PASSWORD('whateverpassword');

You can check from the command line as follows

PASSWORDISOK=`mysql -uroot -p... -ANe"SELECT COUNT(1) Password_is_OK FROM mysql.user WHERE user='myuser' AND password=PASSWORD('whateverpassword')"`

If you are not root and want to test myuser only, you can do this:

PASSWORDISOK=`mysqladmin -umyuser -pwhateverpassword ping | grep -c "mysqld is alive"`

If you get 1, password for myuser is verfiied as good.

share|improve this answer

You can use the following command (assuming that you have mysql set up in your PATH):

mysql -h host -u user -p

Just replace host and user with the correct values and then you should be prompted for your password.

I hope this helps you.

share|improve this answer
    
I'm wanting to check programmatically. Like something that returns true or false. –  Jakobud Sep 5 '12 at 21:28
mysql --user=user_name --password=your_password dbname

Is your question that simple, or is there a specific case you need to test?

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.