ERROR 1044 and 1045

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View
Hi all,

I have a curious problem with the ERROR 1044 and 1045:

-system: OS X 10.4.3 (bash shell)
-bash schell prompt: /~ kssun$
-I have set passwd to 'kssun'
-I set path: PATH=$:/usr/local/mysql/bin

- symptom 1
 when I  type mysql (without passwd), I enter mysql prog with following
greeting msg:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 56 to server version: 5.0.17-standard

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.


But when I try to create database, I get ERROR 1044:
mysql> create database hi;
ERROR 1044 (42000): Access denied for user ''@'localhost' to database

for information:
mysql> select user();
| user()          |
| kssun@localhost |
1 row in set (0.00 sec)

-Symptom 2
I try then to login with -u option, here are the results:

(1) login as kssun w/o passwd
successed as like login w/o user name, ERROR 1044 for create database,
select user() show  kssun@localhost

(2) login as kssun with passwd
failed, ERROR 1045, however I typed the passwd that I set for bash
ras75-3-82-226-221-2:~ kssun$ mysql -u kssun -p
Enter password:
ERROR 1045 (28000): Access denied for user 'kssun'@'localhost' (using
password: YES)

(3) login as root (w/o passwd)
successed to create dababase without any difficulty and user become:
mysql> select user();
| user()         |
| root@localhost |

Would someone have un idea of this mysterious situation?

Thanks for whom read this article.


Re: ERROR 1044 and 1045

You have an anonymous user installed. If you login as root with the correct
password, you can query your users with

select Host, User, Password from mysql.user;

here you'll see a user without a name (that's the anonymous user that will
be used if no other user account applies to the specified host, user and

You can (and likely should) delete this anonymous user with

delete from mysql.user where User = '';
flush privileges;


Re: ERROR 1044 and 1045

When you want to find out who you are logged in as, do a :

select current_user();

The 'select user()' statement shows you the username and hostname you
are connected as, but this doesn't tell you much about how it maps to
the user privilege tables.  The 'current_user()' function will tell you
the privilege entry that is being used to authenticate you.

For anonymous users, the userid portion will be blank.

Chances are, if you do a 'select current_user()', when you connect
you're connecting as an anonymous user (did you create a database user,
or are you trying to log in as an OS user?)

As the anonymous user (on a default installation) you'll be able to
connect to the server and perform operations on the 'test' and 'test_%'
databases (where '%' is any string).

When you connect as 'root', you are connecting as the default database
administrator - where no password is set by default - hence you have
administrative privileges.

You can use the 'CREATE USER' statement to create a new user - which
you can then use to manage the database.  Check out the MySQL
documentation for more info on this command .

You can use the 'SET PASSWORD' statement to set a password for the
'root' user (since right now anyone that can log on locally to your
system can gain administrative privileges).

Once you set a password for the 'root' user, you will no longer be able
to connect without a password.

If you want to get rid of the anonymous users, just issue the following

delete from mysql.user where user='';
delete from mysql.db where user='';
flush privileges;

Once you do that you'll no longer be able to connect to the server

Chander Ganesan
Open Technology Group, Inc.
One Copley Parkway, Suite 210
Morrisville, NC  27560
Phone: 877-258-8987/919-463-0999
MySQL training from the experts.

arsisthesis wrote:
Quoted text here. Click to load it
Quoted text here. Click to load it
Quoted text here. Click to load it

Site Timeline