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
UPDATE mysql.user SET Host='%' WHERE User='root';
如果想修改密码的话
UPDATE mysql.user SET Password=PASSWORD('新密码') WHERE User='root';
修改完记得再执行一下
FLUSH PRIVILEGES;
上述命令可以立即生效,也可以重启mysql使之生效。
将host改为%并不意味着你一定可以远程登陆了,可能还有一个地方。
修改/etc/mysql/mariadb.conf.d/50-server.cnf 注释掉绑定ip为127.0.0.1