spongezh22
spongezh22

Reputation: 241

Rails and Mysql2 Access denied for user 'root'@'localhost' (using password: NO)

I am somewhat new to Rails, and much of my experience involves me feeling out how to work out the problem so I apologize in advance if I have missed and obvious solution. I run a Windows machine.

I am creating a log-in and registration using mysql2. MySQL installer has already been used to install the server, workbench, etc. (I configured the root password as password) and I have already installed the mysql2 gem.

The rails was bundled successfully but when I entered rake db:create, the error Access denied for user 'root'@'localhost' (using password: NO) occurred.

Rails then prompted me for my password, I entered it but the error occurred again. After entering my password the second time, it seemed as if it worked fine until I tried to do a rails db:migrate wherein the error appeared again making it not possible to migrate.

This confuses me because in the MySQL query, I have my password set as the same one I entered. I tried giving the 'root' user all the schema privileges, but that made no difference. Please tell me how to solve this problem and thank you.

If you have any questions about my question, please ask.

Upvotes: 24

Views: 82596

Answers (12)

Rob Rouse Jr.
Rob Rouse Jr.

Reputation: 69

If you don't remember setting your password, do this:

sudo mysql -u root

use mysql;

UPDATE user set authentication_string='MyPassword' where user='root';

This will update your password. Then, change the database/config.yml file to match your password.

(Depending on the version of MySQL you're running, you might have to surround the 'password' with a PASSWORD() function or a sha2() function)

Upvotes: 0

Willian Araujo
Willian Araujo

Reputation: 21

In my case, it was just an incorrect database password that was in the database.yml file. I changed the password and it worked perfectly.

Upvotes: 1

A. Askarov
A. Askarov

Reputation: 715

Error was saying that Access denied for user root. (I had no password). My problem was for the reason that i've changed the default 3306 port to 8111. In database.yml ive added port: 8111.

Upvotes: 0

uberdave
uberdave

Reputation: 502

On advise of Bhrat above I created my linux user as a user in mysql. ensured that user can connect from $user changed user from root in database yml to user rake db:create worked

Upvotes: -1

Josiah
Josiah

Reputation: 2866

Not a rails answer, but for others showing up here:

If you are passing in your own credentials somehow, perhaps an ENV file to a standalone script, be sure that you don't have any invisible characters like a '\n' at the end of your password. That'll really mess with you.

Upvotes: 0

lennart
lennart

Reputation: 139

My problem was due to the password starting with "!". Changing my password in mysql and database.yml solved it for me.

Upvotes: 1

Igorzovisk
Igorzovisk

Reputation: 674

Running ./bin/spring stop fixed for me. I found it in a Github, but can't remember where.

Upvotes: 2

user5099519
user5099519

Reputation:

This was one of the few occasions where I had to restart the rails server after I made changes to the database.yml file. After I set the password in the file, I had to restart the rails server. After that the error went away.

Upvotes: 0

Michael Chemani
Michael Chemani

Reputation: 21

Rake try in fact to create your test database as well, that's why you get the error message if you do not set correctly your test database credentials like (database.yml)

default: &default
    adapter: mysql2
    encoding: utf8
    database: atheneum
    pool: 5
    username: ******
    password: "******"
    host: localhost


development:
  <<: *default
  database: atheneum

test:
  <<: *default
  database: atheneum_test

Upvotes: 1

zombie_ghast
zombie_ghast

Reputation: 1783

for me helped

$ mysql -u root -p

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypassword')

and in databse.yml

development:
adapter: mysql2
database: mydb
host: localhost
username: root
password: "mypassword" #I had an empty string here before

thanks to @spongezh22

Upvotes: 32

macjeans
macjeans

Reputation: 41

I just copied and pasted the above (below) to my rails yml file and it worked!!

development:
adapter: mysql2
database: mydb
host: localhost
username: root
password: mypass

Upvotes: 1

Bharat soni
Bharat soni

Reputation: 2786

seems like your user cannot connect to the mysql DB, try this commands in your console

mysql -u root -p

and when prompted give the password as 'admin'

if this is possible then you should be good to go

And you database yml file should be like

development:
 adapter: mysql2
 database: mydb
 host: localhost
 username: root
 password: mypass

Upvotes: 10

Related Questions