MySQL change root default password on Mac OS X - mysql

I tried changing MySQL root password right after installing it. Now on terminal, it says to check out some newer query ALERT USER. I checked the documentation, but it's still the old query CHANGE PASSWORD
Any help please

Ok i found a way to change the root password from workbench i just clicked on "local instance 3306" in the home page and gave me a choice to change root password, it's even easier than changing it from the terminal !

instruction that worked with my case.
mysql -uroot -p (default root password is blank with brew install)
use mysql;
ALTER USER 'root'#'localhost' IDENTIFIED BY 'new_password';
That's it. ( Mac M1 MacBook, mysql installed with brew, mysql version 8.0.28 for macos12.0 on arm64 (Homebrew) )

If anyone has trouble with the mysql -u root -p command but know the current MySQL password and has MySQL Workbench installed, just try to start a command line client by right clicking your localhost connection in MySQL Workbench:
Once the command line client started, enter your current MySQL password when prompted in terminal. After that, use the ALTER USER 'root'#'localhost' IDENTIFIED BY 'new_password' command.
Using Mac M1 MacBook and mysql version 8.0.30

Related

mysqli_real_connect(): (HY000/1045): Access denied for user 'phpmyadmin'#'localhost' (using password: YES)

I am doing an online course from coursera where they tolm me to install phpmyadmin.
NOW I am a total beginner in this thing so I am not able to do much research upon that and now somehow, after I installed MySQL and phpmyadmin, in the localhost, I am getting some errors, is that common? Because the other participants in the course are not getting them. If that's fatal or will limit some of my obvious abilities, please tell me how to cure it.
BTW If you didn't noticed the errors are:
mysqli_real_connect(): (HY000/1045): Access denied for user 'phpmyadmin'#'localhost' (using password: YES)
and
Connection for controluser as defined in your configuration failed.
Some more details:
PHP version is 7.4
Operating System is Ubuntu 20.04
I was using MaridDb solved this issue with the following:
sudo systemctl stop mariadb
sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
You will see a prompt like below:
Type help; or \h for help. Type \c to clear the current input statement.
MariaDB [(none)]> FLUSH PRIVILEGES;
For MySQL 5.7.6 and newer as well as MariaDB 10.1.20 and newer
ALTER USER 'root'#'localhost' IDENTIFIED BY 'new_password';
OR:
For MySQL 5.7.5 and older as well as MariaDB 10.1.20
SET PASSWORD FOR 'root'#'localhost' = PASSWORD('new_password');
I've just installed LAMP on a new PC, and got the same problem.
Linux Mint 20 + MariaDB.
Password for root and phpmyadmin was already ok, but the error was still there.
Finally I discovered another configuration file, that sets the phpmyadmin password; you have to edit it:
$ sudo nano /etc/dbconfig-common/phpmyadmin.conf
set the correct password (= dbc_dbpass) for user dbc_dbuser='phpmyadmin'
Use ctrl-O to save, then ctrl-X to exit. Then launch the command:
$ sudo dpkg-reconfigure phpmyadmin
(Do NOT reinstall the DB).
In my PC il works!
I had a similar issue with mysql 8.0.22 and Ubunutu 20.04.3lts after installation despite setting up the phpmyadmin user during the installation it wouldn't let me in with the password I set.
I solved it by logging in at the command line using
sudo mysql
Then changed the password by the below and I could then log in
ALTER USER 'phpmyadmin'#'localhost' IDENTIFIED BY 'new-password-here';
I had the same problem by changing the password of the root user and the problem was solved by changing the content of the config.inc.php file inside the xampp\phpMyAdmin folder.
Open the file with Notepad, then enter the defined password in front of the password field and that's it
Error image
---The part where the password must be entered

MySQL Workbench on Linux

I installed MySQL on Ubuntu 16.04. I can login to MySQL shell by typing the command:
sudo mysql -u root
However, I also want to see the DB via MySQL Workbench. I installed it on my computer, and when I go to Database -> Connect to Database I get the following window:
When I click 'OK' I get the following dialog:
I checked 1 and 2. 3 I don't know how to check and as for 4, I don't know what is the password at all (I don't have to use it to login via the console).
Do you know how to resolve it?
Firstly never work with root on a server. Period it is a bad habit. So first things first would be to log into the command line and create a user that is the root equivalent and then use that user.
So use the command line and then execute the following steps:
CREATE USER 'username'#'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'#'%'
WITH GRANT OPTION;
FLUSH PRIVILEGES;
This will create an administrative user called username. You can then use this account to log in. Get in the habit of doing this.
Use terminal login mysql
sudo mysql -u root
Initial root password
update user set password=PASSWORD(‘123456’) where User='root';
And then try workbench login again.
If you want to connect mysql service from any others host except localhost,
you need set root host to %
mysql -u root –p
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user; --check result,init value maybe 127.0.0.1 or localhost
I think that I found the problem. When I installed MySQL, I skipped the option to give a password to root user. Therefore, I decided to remove MySQL from my linux by using the command:
apt-get purge mysql mysql-server mysql-common mysql-client
and then re-install it by:
apt-get install mysql-server
This time, I gave a password to root user during the installation, and after the installation had been finished, I opened MySQL Workbench and used the password I gave during the installation.

Using MySQL Workbench on Linux Mint 18

I've never had a MySQL install go smoothly. Not Mac. Not Windows. And now Linux joins the mess.
I installed mysql-server via Software Manager after a failed attempt with linuxbrew. I can actually run it in terminal, but I have to use sudo which seems odd. I don't see any examples where the user has to use sudo.
On top of that, when I run MySQL Workbench I can't connect. I get the error, Access denied for user 'root'#'localhost'
Any suggestions?
Did you install mysql from apt-get install mysql-server ? it probably asked you for a default root password (Ubuntu like systems usually do). If you have forgotten it, have no fear, the password can be reset
http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html#resetting-permissions-unix
Try doing this as linux root (sudo -i), if that doesn't work try
sudo -i
sudo mysql
and give it a shot.
Alternatively, sudo, connect to mysql and create another user account with full privileges something like
GRANT ALL ON *.* to someother user identified by ...
You cannot connect remotely with root database user since the default user created doesn't have access on '%' (remote access).
Create another user with limited rights (secure) and use it for workbench.
creating user on mysql:
create user test#'%' identified by 'test_user_password';
grant all on *.* to test; -- you can specify specific permissions/databases
flush privileges;
Try these credentials with workbench.
As far as the linux command line is concerned
mysql -uroot -p
-- hit enter, no password and see if you can get connected

Can't connect sequel pro with mysql

I downloaded and installed mysql community server GPL version 5.7.13 on my Mac OSX El Capitan. Then I downloaded sequel pro. I tried to connect mysql using socket. I used the name localhost and username root and kept the password blank. When I tried to connect every time I got the message in the picture.
I also want to add, when I install mysql for the first time, there is a popup which gives me a cryptic password for the root#localhost. So instead of keeping the password section blank, I tried that password too. But it kept showing me the same message except 'root'#'localhost' (using password: YES). What am I doing wrong?
Start mysql server in terminal by:
mysql.server start
Access in mysql with your root user (deffault user created when installed mysql)
mysql -uroot
Create a new account by:
CREATE USER 'new_user'#'localhost' IDENTIFIED BY 'new_password';
Give it all privileges:
GRANT ALL PRIVILEGES ON * . * TO 'new_user'#'localhost';
Then to reload newly assigned permissions run:
FLUSH PRIVILEGES;
Now you should be able to connect with Sequel Pro with new user:
Standard
Host: 127.0.0.1
Username: new_user
Password: new_password
I use Sequel Pro and connect without password to a localhost server via socket, without any problems. The most likely problem is you typed in the wrong root password. You can reset the root password.
Make sure MySQL is running (start MAMP/XAMP servers)
MAMP uses "root" for the username AND "root" for the password
Use 127.0.0.1 instead of 'localhost'.
Uninstall it and again install. Give the root password at the time of installation. It worked for me.
You will need to restart mysql after changing password, password can be and is in many cases blank, empty carriage return.
the easiest way to restart mysql I have found is by command line
mysql restart;

Unable to access MySQL after it automatically generated a temporary password

I have erased and installed OSX 10.11 El Capitan and I have been following through this tutorial to get MySQL up and running on the new OS X. The first step was to download MySQL For Mac OS X 10.9 (x86, 64-bit), DMG Archive (works on 10.11, they recommended in the tutorial). While I were finishing installing the MySQL, I got the message saying that :
2015-10-25T02:10:54.549219Z 1 [Note] A temporary password is generated for root#localhost: R>gFySuiu23U
If you lose this password, please consult the section How to Reset the Root Password in the MySQL reference manual.
That was weird, I have never seen that kind of message. After that, I started MySQL via the Preference Pane and then use /usr/local/mysql/bin/mysql -v command on the terminal for another step. I got an error message saying that :
ERROR 1045 (28000): Access denied for user 'cheetah'#'localhost' (using password: NO)
I have also tried to access database through Sequel Pro using root as username and blank password, I got access denied message saying that :
Unable to connect to host 127.0.0.1 because access was denied.
Double-check your username and password and ensure that access from your current location is permitted.
MySQL said: Access denied for user 'root'#'localhost' (using password: NO)
Okay, I also tried this again using root as a username but 'R>gFySuiu23U' as a password (which was generated from MySQL). I got connection failed message saying that :
Unable to connect to host 127.0.0.1, or the request timed out.
Be sure that the address is correct and that you have the necessary privileges, or try increasing the connection timeout (currently 10 seconds).
MySQL said: Your password has expired. To log in you must change it using a client that supports expired passwords.
How could I solve this problem? I remember that MySQL has never got automatically generated a temporary password like this, hasn't it ?
Try this:
mysql -u root -h 127.0.0.1 -p
Enter password: (enter the random password here)
Ref:https://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysqld.html
Following this, you may reset your password using
ALTER USER 'root'#'localhost' IDENTIFIED BY 'new-password';
This is what worked for me on OS X Yosemite running MySql v5.7 (installed from the .dmg).
cd /usr/local/mysql/bin
./mysql -u root -p --connect-expired-password
(Enter the temporary password generated by the installer.)
This gets you into sandbox mode and mysql> prompt. Then set desired root password with SET PASSWORD:
SET PASSWORD FOR 'root'#'localhost' = PASSWORD('mySuperSecretPassword');
Now that the password MySQL had generated is expired, the problem is reduced to getting this password to work again (1) or generate a new one (2). This can be accomplished by running MySQL with the skip-grant-tables option which would make it ignore the access rights:
Stop your MySQL server.
Add the below at the end of the [mysqld] section of my.cnf file and save it.
skip-grant-tables
Start MySQL server.
In terminal, type
mysql -u root -p
to get into MySQL command prompt.
In the command prompt, type
USE mysql;
to get into the mysql database where it keeps database users.
Type
UPDATE user SET password_expired = 'N' WHERE User = 'root';
to let MySQL know the password is not expired (1) or
UPDATE user SET authentication_string = PASSWORD('YourNewPassword'), password_expired = 'N' WHERE User = 'root';
to assign a new password YourNewPassword to root (2).
Doing these steps under OSX 10.11 El Capitan and MySQL 5.7.X, should do the trick.
Considering that you already have MySQL installed then..
Open a terminal window and type:
sudo /usr/local/mysql/support-files/mysql.server stop
sudo mysqld_safe --skip-grant-tables
Since the command fired in the step 2 will be under on going state, you need to open another terminal window and then type:
mysql -u root -p
UPDATE mysql.user SET password_expired='N', authentication_string=PASSWORD('') WHERE User='root';
quit;
sudo /usr/local/mysql/support-files/mysql.server restart
Important: in the step 2 you must replace for your password.
Hope it will wok for you.
MySQL password expired
Resetting the password will solve the problem temporarily, however, from MySQL 5.7.4 to 5.7.10 (I think to encourage better security) the default value for the default_password_lifetime variable is 360 (about a year). For those versions, if you make no changes to this variable (or to individual user accounts) all user passwords expire after 360 days.
Typically, from a script you might get the message: "Your password has expired. To log in you must change it using a client that supports expired passwords."
So, to prevent automatic password expiry, log in as root (mysql -u root -p), then, for clients that automatically connect to the server (e.g. scripts.) change the password expiration settings for those clients:
ALTER USER 'script'#'localhost' PASSWORD EXPIRE NEVER;
or you can disable automatic password expiration for all users:
SET GLOBAL default_password_lifetime = 0;
Links:
MySQL: Password Expiration and Sandbox Mode
MySQL: Password Expiration Policy
Password expiration policy in MySQL Server 5.7
I'm running macOS Sierra(10.12.3) and I installed mysql-5.7.17-macos10.12-x86_64.dmg.
The answer from #lesley worked for me with the exception that I needed to add ./ to ensure I was calling the mysql binary in my current working directory. Which is where the aforementioned package was installed.
If you cd to /usr/local/mysql/bin and run mysql -u root -p --connect-expired-password, you could receive the following error.
mysql: unknown option '--connect-expired-password'
I did. Because simply running mysql without providing a path, called a previously installed version of the MariaDB client.
So to ensure you are executing the correct binary, you can either
provide the absolute path
/usr/local/mysql/bin/mysql -u root -p --connect-expired-password
or the relative path after changing directories
cd /usr/local/mysql/bin
./mysql -u root -p --connect-expired-password
Both ways should work. Once you are connected to the client, the instruction are the same as above from #lesley.
Enter your temporary password generated by the installer and set your new password.
SET PASSWORD FOR 'root'#'localhost' = PASSWORD('yourNewPassword');
I faced the same problem. I followed the installation process guide from https://www.ntu.edu.sg/home/ehchua/programming/sql/MySQL_HowTo.html and downloaded DMG archive and installed MySQL on my MAC OS X 10.12.2.
Finally executed the following commands on new Terminal.
cd /usr/local/mysql/bin
./mysql -u root -p --connect-expired-password
It worked.
Answer 7 worked for me: El capitan, MySQL installed from dmg and autogenerated password, but made sure to cd to /usr/local/bin/mysql before entering ./mysql -root -p Obvious, but I didn't the first time.
Now to find where all my databases and tables are and how to link them in.
For Mysql 5.7 I use
shell $ > sudo grep 'temporary password' /var/log/mysqld.log
This particular one did the trick for me:
As specified in this link: https://www.variphy.com/kb/mac-os-x-reset-mysql-root-password
Do all the steps except executing
UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root';
Execute
UPDATE mysql.user
SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
WHERE User = 'root' AND Host = 'localhost';
And then execute
FLUSH PRIVILEGES;
The another way to solve this issue is to use an older version of MySQL instead.
I have uninstalled MySQL version 5.7.9 for Mac OS X 10.9 (x86, 64-bit), DMG Archive and then install the older version, MySQL version 5.6.7 for Mac OS X 10.9 (x86, 64-bit), DMG Archive. This issue is solved. The given autogenerated password before finishing installation of this older version is gone and I can ultimately access the database using root as username and a blank password. Everything is working like a charm!
I installed view brew, and I had the same error message until I noticed this caveat:
We've installed your MySQL database without a root password. To secure it run:
mysql_secure_installation
To connect run:
mysql -uroot
To have launchd start mysql now and restart at login:
brew services start mysql
Or, if you don't want/need a background service you can just run:
mysql.server start
I got around this problem by running
'mysql -u root -p --connect-expired-password'
Then input the expired auto-gen password from mysql. Finally got in. Selected mysql db with
'use mysql'
and then updated user 'root' pw with
'ALTER USER 'root'#'localhost' IDENTIFIED BY 'your new password'
Installing MySQL manually by downloading packages for the first time generates a default password for root. Copy and save that. If not done somehow on successive re-installations it does not show that password.
Thus you cannot login to root.
Do the following :
Find mysql related entries from system
sudo find / -name mysql
Remove all mysql related entries by doing rm -rf <mysql_entries_above>
Download latest mysql-server and intall it.
You will be promted with a default password which you need to copy.
Run mysql_secure_installation and paste that password when asked for root.
Subsequently follow the steps and change admin password when prompted for.
Restarting Mysql server worked for me.
But in Mysql80-Server, it is more complicated than 5.7. In MySQL80 not allow you to update or change password during the config in my.cnf in state "skip grant table". So you need 3 big steps to do
I) change my.cnf to skip-grant-table
II) login MySQL with blank password & update table to blank password
III) restart mysql and login with blank password and update to new password
Step to do: (whatever, you forgot root password, temporary password gen by installation not work, etc. please follow the steps below) In my case on FreeBSD 12.2
stop your mysql server by
/usr/local/etc/rc.d/mysql-server stop
recheck again whether it is really stop (in case more serious problem than that)
/usr/local/etc/rc.d/mysql-server status
mysql is not running.
find your my.cnf file and add "skip-grant-tables" to it.
(normally before [Mysqldump] head)
restart mysql
/usr/local/etc/rc.d/mysql-server start
login to mysql
mysql -u root -p
when it ask for password, just press enter and you will log into mysql
select DB to use
use mysql
look at the table user
select user, authentication_string,password_expired from user;
update to blank password
UPDATE user SET authentication_string = '', password_expired='N' WHERE User = 'root';
quit mysql and make mysql stop
goto file my.cnf then take "skip-grant-tables" out of file.
restart mysql again with "mysql -u root -p" enter the blank password
then
ALTER USER 'root'#'localhost' IDENTIFIED WITH
caching_sha2_password BY 'YourNewPassword';
quit mysql and make mysql stop
restart mysql again then you will login with your new password
This may happens when you have installed mysql before.
Try the password you set for the last version of mysql.
This did work for me.