I have installed ubuntu 16.04 server. Mysql server was installed by default in it. When I am trying to access the mysql with mysql -u root -p
, I am unable to log in to mysql because I dont have the password. Is there any default password?
I have also tried with --skip-grant-tables
, even this does not work. Even trying to log in with just mysql -u root
is a failure.
This is what you are looking for:sudo mysql --defaults-file=/etc/mysql/debian.cnf
MySql on Debian-base Linux usually use a configuration file with the credentials.
Mysql by default has root user's authentication plugin as auth_socket
, which requires the system user name and db user name to be the same.
Specifically, log in as root or sudo -i
and just type mysql
and you will be logged in as mysql root
, you can then create other operating users.
If you do not have a root on host, I guess you should not be allowed to login to mysql as root?
I had a fresh installation of mysql-server
on Ubuntu 18.10 and couldn't login with default password. Then only I got to know that by default root user is authenticated using auth_socket
. So as in the answer when the plugin changed to mysql_native_password
, we can use mysql default password
$ sudo apt install mysql-server
$ sudo cat /etc/mysql/debian.cnf
You can find the following lines in there
user = debian-sys-maint
password = password_for_the_user
Then:
$ mysql -u debian-sys-maint -p
Enter password:
type the password from debian.cnf
mysql> USE mysql
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User | Host | plugin |
+------------------+-----------+-----------------------+
| root | localhost | auth_socket |
| mysql.session | localhost | mysql_native_password |
| mysql.sys | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> COMMIT;
Either:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Or:
// For MySQL 5.7+
mysql>UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';
--Update--
Sometimes you will need to restart your mysql server.
sudo service mysql restart
or
sudo systemctl restart mysql
You can simply reset the root password by running the server with --skip-grant-tables and logging in without a password by running the following as root or with sudo:
service mysql stop
mysqld_safe --skip-grant-tables &
mysql -u root
mysql> use mysql;
mysql> update user set authentication_string=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit
# service mysql stop
# service mysql start
$ mysql -u root -p
- the first you should stop mysql
- use this command
sudo mysqld_safe --skip-grant-tables --skip-networking &
- and then input
mysql -u root
try this way,I have been solved my problem with this method.
Although this is an old question, there are several of us still struggle to find an answer. At least I did. Please don't follow all the lengthy solutions. You could simply login to your mysql as root without providing any password (provided it is a fresh installation or you haven't changed the password since your installation) by adding sudo before your mysql command.
$sudo mysql -uroot -p
mysql>
This is because mysql changed the security model in one of the latest versions.
Hope this helps
I think another place to look is /var/lib
.
If you go there you can see three mysql folders with 'interesting' permissions:
user group
mysql mysql
Here is what I did to solve my problem with root password:
after running
sudo apt-get purge mysql*
sudo rm -rf /etc/mysql
I also ran the following (instead of my_username put yours):
cd /var/lib
sudo chown --from=mysql <my_username> mysql* -R
sudo rm -rf mysql*
And then:
sudo apt-get install mysql-server
which prompted me to select a new root password. I hope it helps
Simply run sudo dpkg-reconfigure mysql-server-5.7
You can find the version you have installed by running dpkg --get-selections | grep mysql-server
Note that in Ubuntu systems running MySQL 5.7 (and later versions), the root MySQL user is set to authenticate using the auth_socket plugin by default rather than with a password. you will need to switch its authentication method from auth_socket to mysql_native_password
as @BeNiza said, they changed the security model. I did following steps and it works for mysql 5.7.27 on ubuntu 18.04
sudo apt install mysql-server
The MySQL database software is now installed, but its configuration is not yet complete.
To secure the installation, MySQL comes with a script that will ask whether we want to modify some insecure defaults. Initiate the script by typing:
sudo mysql_secure_installation
you should press Y and hit the ENTER key at each prompt.
This will cause issues if you use a weak password
You can simply login to your mysql as root without providing any password by adding sudo before your mysql command.
sudo mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your-password';
If you set a weak password you would see the following error:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> FLUSH PRIVILEGES;
mysql> exit
Note: After configuring your root MySQL user to authenticate with a password, you’ll no longer be able to access MySQL with the sudo mysql command used previously. Instead, you must run the following:
mysql -u root -p
After entering the password you just set, you will see the MySQL prompt.
来源:https://stackoverflow.com/questions/42421585/default-password-of-mysql-in-ubuntu-server-16-04