linux mysql mariadb
非常有必要更新一下以及更正一下错误
MariaDB用的是unix_socket,优点是使用系统本地账号,无须密码, 缺点正如优点所言,不支持网络访问。
mysql8.0的确启用了caching_sha2_password,但是老版本的php和navicat不支持,当时最新版本是不是支持我不是非常清楚,我记得尝试了,但不支持,但是如今查阅资料,也许支持了,或者通过变通的方法可以支持,但是我不知道,总之现在的php最新版本和navicat是支持的,我亲自验证的。
当时搜索资料,将caching_sha2_password换成mysql_native_password的文章在网络上千篇一律流传甚广,我尝试既然mysql启用更好的方式,必然是正确的以及必然被支持的,可惜当时的确找不到还把mysql和mariadb弄错了,惭愧。
顺便说下mariadb服务端不支持caching_sha2_password,但mariadb客户端兼容caching_sha2_password,可以用来连接mysql。
===============================================
在debian安装mysql
准确的说是MariaDB,因为替换了,安装命令是apt install mariadb-server
安装后php(以及navicat)不能访问,原因mysql8.0启用了新的密码验证方式,但是这些客户端都不支持,所以我们只好换成旧的了。
将caching_sha2_password换成mysql_native_password
UPDATE mysql.user SET plugin='mysql_native_password' WHERE User='root';
默认安装的数据库密码是空的,直接用mysql 命令就可以登陆,然后执行上述命令。
用navicat+ssh访问的话,ip填localhost或127.0.0.1,而不是服务器ip
如果想直接远程登陆的话,应该修改Host
1 | UPDATE mysql. user SET Host= '%' WHERE User = 'root' ; |
如果想修改密码的话
1 | UPDATE mysql. user SET Password = PASSWORD ( '新密码' ) WHERE User = 'root' ; |
修改完记得再执行一下
1 | FLUSH PRIVILEGES ; |
上述命令可以立即生效,也可以重启mysql使之生效。
将host改为%并不意味着你一定可以远程登陆了,可能还有一个地方。
修改/etc/mysql/mariadb.conf.d/50-server.cnf 注释掉绑定ip为127.0.0.1
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步