Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'm having some difficulties with MySQL on my Ubuntu box. Just installed Apache, MySQL, PHP and phpMyAdmin. phpMyAdmin gives:

#1045 Cannot log in to the MySQL server

on every login attempt. I've tried username 'root' and empty password, username 'root' and password 'root', username 'mysql' and password 'mysql', username 'mysql' and password 'root'.

I also get Access denied for user root@x.x.x.x error when I try to run mysql in terminal:

mysql -u root

or

mysql -u root -p

or

sudo mysql

or any of the combinations listed above. I also get access denied when I try these:

mysqladmin -u root password secret

sudo /etc/init.d/mysql stop

Even

service mysql stop

gives unknown instance.

So - can anyone tell me how to get into my database? Thanks.

Update:

When I run ps aux | grep mysql I see sudo mysqld --skip-grant-tables.

Update 2:

After reboot I see mysqld running. Then I try service mysql stop and get the following:

user@host:$ service mysql stop
stop: Rejected send message, 1 matched rules; type="method_call", sender=":1.47" (uid=1000 pid=2267 comm="stop mysql ") interface="com.ubuntu.Upstart0_6.Job" member="Stop" error name="(unset)" requested_reply=0 destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init"))

Wtf?

Update 3:

I finally managed to change my root password by using this command:

sudo dpkg-reconfigure mysql-server-5.1

Still have no idea why I couldn't log in before (don't remember setting any password previously). Also, not sure if the deamon now will run correctly after a reboot...

share|improve this question
add comment

3 Answers

up vote 1 down vote accepted

OK, I think the first thing is to check whether it's actually running. Execute

ps aux | grep mysql

and check for a line containing mysqld. If there is one, it's running and you should be able to connect (more below). If there isn't, then your service isn't running and therefore you can' connect to or stop it.

It's also possible it has become a zombie (although I have never seen that). In that cased your easiest choice is probably to restart the entire box. I know this sounds drastic, but zombies are quite hard to kill (hence the name).

If the service is running, but you still can't connect, then maybe MySQL isn't listening.

By default, MySQL will only allow connections from 127.0.0.1. If you are trying to connect through the actual IP address of the computer, you need to tell MySQL to listen on that IP address. The relevant lines is in my.cnf and looks like this:

bind-address            = 127.0.0.1

Modify the address to the IP address of your network interface and restart the service. Or, alternatively, connect to 127.0.0.1

share|improve this answer
    
Yes, looks like mysqld is running.. see updated question –  o01 Jul 7 '11 at 23:30
    
Going to try rebooting like you suggest... –  o01 Jul 7 '11 at 23:32
add comment

The hint here is:

destination="com.ubuntu.Upstart"

Your Upstart service entry has a bug of some kind in it, preventing it from starting/stopping properly. Are you running Lucid? If so, look here for some additional help. Basically, it sounds like a packaging bug.

share|improve this answer
add comment

The password for the "root" account on ubuntu (well, the password you use for sudo since root is disabled by default) is not the same password as the root password for mysql, it was probably provided during the install.

If you dont know the password and want to reset it you can do the following

  1. Stop mysql with service mysql stop or /etc/init.d/mysql stop
  2. Start mysqld_safe skipping grant tables:

    mysqld_safe --skip-grant-tables --skip-networking &

  3. Login, change password (root password will be disabled in this mode)

    root@vps:~# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.1.41-3ubuntu12.10-log (Ubuntu)

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    mysql> update mysql.user set Password=Password("foobar") where user="root"; Query OK, 3 rows affected (0.02 sec) Rows matched: 3 Changed: 3 Warnings: 0

    mysql> flush privileges; Query OK, 0 rows affected (0.03 sec)

    4; Stop the mysqld_safe process, restart mysql and you should know have your root password. There are plenty of other guides on how to do this on Google,, just google for "reset mysql root password"

share|improve this answer
    
Yes, as I wrote; I get error on "/etc/init.d/mysql stop" and "service mysql stop" –  o01 Jul 7 '11 at 23:33
add comment

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.