AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
你如果用默认的mysql客户端登陆,可能就会有这个报错 ~~~ mysql -uroot -p123 -P3308 -S /tmp/mysql80.sock mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: / ~~~ 在mysql5.7环境里,虽然可以设置default_authentication_plugin来改变认证加密方式,但是一般人不会去设置.在mysql8.0下,默认变成了default_authentication_plugin=caching_sha2_password,包括你刚初始化的root用户也是这个认证加密方式,这样的结果是让你除非用新的协议驱动,例如必须用8.0自带的mysql客户端才行,不然就连接不上数据库.这样就必然造成不兼容的情况,幸好,是可以改回旧的方式的. vim my.cnf ~~~ [mysqld] default_authentication_plugin=mysql_native_password ~~~ 但是,这个参数只对新授权的用户生效,旧的root密码还是用旧的方式,类似下面这样 ~~~ use mysql; #查看各用户情况 mysql> select Host,User,plugin,authentication_string from mysql.user; +-----------+------------------+-----------------------+------------------------------------------------------------------------+ | Host | User | plugin | authentication_string | +-----------+------------------+-----------------------+------------------------------------------------------------------------+ | localhost | mysql.infoschema | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | localhost | mysql.session | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | localhost | mysql.sys | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | localhost | root | caching_sha2_password | $A$005$.Sf}Q/Jh>3b6CjI5/vMJVDIQbS1dbFWaCVuiby7aX3ZY4lB6/M7Vvny5DUA | +-----------+------------------+-----------------------+------------------------------------------------------------------------+ 4 rows in set (0.00 sec) ~~~ 可以看到plugin是不一样的,密码的加密方式也很明显不一致造成差异. 修改用户密码,在MySQL中执行命令: ~~~ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; ~~~ 管理员root的host是localhost,代表仅限localhost登录访问。如果要允许开放其他ip登录,则需要添加新的host。如果要允许所有ip访问,可以直接修改成“%” 授权 上面说了创建一个用户,在mysql8.0创建用户和授权和之前不太一样.其实也不能说不一样,而是说更严格,需要先创建用户和设置密码,然后才能授权. ~~~ #先创建一个用户 create user 'sroot'@'%' identified by '123123'; #再进行授权 grant all privileges on *.* to 'sroot'@'%' with grant option; ~~~ 如果按以前的方式来做,那就会报语法错误 ~~~ grant all privileges on *.* to 'sroot'@'%' identified by '123123'; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by '123123'' at line 1 ~~~ 所以授权用户要注意方法了 查看用户权限 ~~~ show grants for 'sroot'@'%'; ~~~ 还有个错误 ~~~ ERROR! The server quit without updating PID file (/usr/local/var/mysql/chenyuntekiMacBook-Air.local ~~~ 在Mac上通过brew install mysql 安装了完mysql 执行mysql.server start 报错:ERROR! The server quit without updating PID file (/usr/local/var/mysql/chenyuntekiMacBook-Air.local.pid). ~~~ nano /usr/local/var/mysql/chenyuntekiMacBook-Air.local.err ~~~ 查看错误信息发现:The error means mysqld does not have the access rights to the directory 猜测是文件权限的问题 ~~~ 执行:chmod -R 777 /usr/local/var/mysql/ ~~~ Google了下 ,问题可能的原因有多种,具体什么原因最好的办法是先查看下错误日志: 1、可能是/usr/local/mysql/data/mysql.pid文件没有写的权限 解决方法 :给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data” 然后重新启动mysqld! 2、可能进程里已经存在mysql进程 解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld! 3、可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。 解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了! 4、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。 解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data 5、skip-federated字段问题 解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。 6、错误日志目录不存在 解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限 7、selinux惹的祸,如果是centos系统,默认会开启selinux 解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。