1

I've just installed a copy of MySQL 5.7 for testing, and I love the fact that it now only creates a single root account, and puts the password into a file called .mysql_secret.

There's just one problem. Where can I find the above mentioned file. On Linux it is apparently found in $HOME, but my test DB is on Windows.

I tried various places including %USERPROFILE% but I just can't find it anywhere!!

Can anyone please tell me where to find this file? As otherwise my testing will be over before it has begun.

Paul White
  • 83,961
  • 28
  • 402
  • 634
IGGt
  • 2,116
  • 5
  • 26
  • 45

3 Answers3

2

My blind guess would be to look in %APPDATA%\MySQL on your system as follows:

cd %APPDATA%
cd MySQL
dir .my_secret

For those who use the MySQL no-install Zip File (such as myself), you will not see one.

If .my_secret is not on your Windows servers, I have an alternative. You could start up mysqld manually with skip-grant-tables, set the password

net stop mysql
cd "C:\Program Files (x86)\MySQL\MySQL 5.7\bin"
start mysqld --skip-grant-tables
mysql -ANe"update mysql.user set authentication_string=PASSWORD('mynewpassword') where user='root'"
mysqladmin shutdown
net start mysql
mysql -uroot -p
Enter password: (enter the password 'mynewpassword' and hit <Enter>)

Give it a Try !!!

RolandoMySQLDBA
  • 182,700
  • 33
  • 317
  • 520
  • Cheers, that worked exactly as required. It turns out though, (after spending all last night reading the MySQL documents in detail) that, as far as I can tell, the .mysql_secret only applies to Linux. On Windows, it is still insecure and creates a root user with no password. I was inadvertently seeing a MySQL Bug (#75656) which is why I couldn't connect. – IGGt Jan 28 '15 at 10:35
1

The .mysql_secret file is only used by mysql_install_db (which is deprecated).

The new way to bootstrap a server (mysqld --initialize) writes the randomly generated password to the error log.

Morgan Tocker
  • 3,800
  • 21
  • 24
0

Can you check your my.ini file? (inside MySQL folder)

There you should find something like:

[mysqladmin]
user=root
password=pwpwpw
port=3306
Nelson
  • 1,689
  • 3
  • 15
  • 27
  • Cheers. I always take the username / passwords out of the ini file for security reasons. I put them back in under [mysqladmin] but it made no difference. – IGGt Jan 27 '15 at 13:27