Mac安装Mysql 8.0.13、修改root密码、Navic
先diss下自己,其实mac利用brew安装mysql还是比较简单的。
但是这次安装,只要遇到问题我就网上搜,搜索结果一大堆解决方法,本来问题比较明朗,但是搜的多了,就会出现其他连锁反应。
【朋友超哥曾经说过:“走的太远 容易忘记回去的方向,写的太多 容易忘记原有的逻辑......”】
自己没有冷静的思考问题,盲目的去按照别人的建议去操作,最后乱七八糟的,也许也是自己技术能力不过关的原因之一吧。
所以在自己踩过太多坑的基础上,写下此文mac利用brew安装mysql 8.0.13的过程。
一、官网下载Mysql 8.0.13
下载地址:https://dev.mysql.com/downloads/mysql/
进入此网站,会自动匹配到你的操作系统,可直接下载.dmg文件。
二、利用brew安装mysql:
Homebrew是macOS缺失的软件包管理器,使 macOS更完整,譬如可以安装Apple Store没有预装,但你需要的东西。
更多详情请查看Homebrew官网:https://brew.sh/index_zh-cn.html
一定要安装Homebrew成功。
安装Mysql前,需要先把之前的文件清理干净(如果第一次安装,此步骤可忽略)
执行下列命令
- sudo rm /usr/local/mysql
- sudo rm -rf /usr/local/mysql*
- sudo rm -rf /Library/StartupItems/MySQLCOM
- sudo rm -rf /Library/PreferencePanes/My*
- rm -rf ~/Library/PreferencePanes/My*
- sudo rm -rf /Library/Receipts/mysql*
- sudo rm -rf /Library/Receipts/MySQL*
- sudo rm -rf /var/db/receipts/com.mysql.*
利用brew安装mysql,输入如下命令:
brew install mysql.jpg
brew install mysql
三、常用的brew命令
获取service列表
brew services list
重启mysql服务
brew services restart mysql
停止mysql服务
brew services stop
四、终端登录mysql
刚才的截图中有提到,brew安装的mysql,root用户登录没有密码,不用输入密码,直接回车即可
mysql -u root -p.jpg
五、查询用户密码:
查询用户密码命令:
use mysql;
select host,user,authentication_string from user;
- host:允许用户登录的ip‘位置’%表示可以远程;
- user:当前数据库的用户名;
authentication_string:用户密码【重点字段,后面有提到此字段】;
执行sql语句.jpg
六、设置(或修改)root用户密码
默认root密码为空的话 ,下面使用navicat就无法连接,所以我们需要修改root的密码。
“此处踩过N多坑,后来查阅很多才知道在mysql 5.7.9以后废弃了password字段和password()函数;而改为authentication_string字段表示用户密码。”下面直接放出目前修改root密码的步骤:
一、如果当前root用户authentication_string字段下有内容,需要先将其设置为空。若已经是为空直接进行步骤二。
use mysql;
update user set authentication_string='' where user='root';
二、使用ALTER修改root用户密码,如下:
ALTER user 'root'@'localhost' IDENTIFIED BY '新密码';
此处有两点需要注意:
- 不需要flush privileges来刷新权限。
密码要包含大写字母,小写字母,数字,特殊符号。
image修改成功后; 退出重新使用用户名密码登录即可。
注意: 一定不要采取 如下形式修改密码:
use mysql;
update user set authentication_string="新密码" where user="root";
因为这样会给user表中root用户的authentication_string字段下设置了newpassword值;
当再使用
ALTER USER 'root'@'localhost' IDENTIFITED BY 'newpassword'
时会报错的;因为authentication_string字段下只能是mysql加密后的41位字符串密码;其他的会报格式错误;
*THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE
七、利用navicat连接本地数据库
第一次连接时,明明账号密码都正确,连接还是报错提示。
MySQL said: Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/lib/plugin/caching_sha2_password.so, 2): image not found
分析下:
1、在MySQL 8.0.4版本之前,执行:SET PASSWORD=PASSWORD('[新密码]');
2、但是MySQL 8.0.4开始,这样默认是不行的。
3、因为之前,MySQL的密码认证插件是“mysql_native_password”,而现在使用的是“caching_sha2_password”。所以我们这里需要再修改一次root密码。
先登录进入mysql环境:执行下面三个命令。(记得带上分号)
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
FLUSH PRIVILEGES;
完美解决啊
navicat成功连接.jpg