赞
踩
目录
2、解决Navicat连接报错“caching_sha2_password”
mysql启动需要这个包,安装前提前检查下有没,没有则需要安装。
- ###查找
- whereis libaio.so.1
-
- ###如果没有则安装
- #在线安装
- yum install -y libaio
- #离线安装
- rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm
卸载删除原有的mariadb,否则可能会报异常。
- #查询原有的mariadb环境
- rpm -qa|grep mariadb
-
- #卸载操作,rpm -e --nodeps后续跟着相应查出的mariadb即可,--nodeps为忽略依赖
- rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
如果之前安装过mysql卸载了,可查看下有无my.cnf并删除
- #查找
- find / -name my.cnf
-
- #删除
- rm -rf /etc/my.cnf
根据自己的操作系统情况选择下载,我选了第一个“mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz”
注意:下载时确认下版本,下图红框处glibc版本需要与mysql显示的版本一致。
- #将文件mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz上传到服务器
-
- #解压
- tar -zxvf mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz
-
- #移动到要安装的目录并重命名
- mv mysql8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql
- #建立mysql所需目录 /usr/local/mysql下建立
- mkdir data
- mkdir log
- mkdir pid
- mkdir tmp
- #编辑my.cnf
- vim my.cnf
添加如下内容(二选一):
第一套:
- [mysqld]
- port = 3306
- basedir =/usr/local/mysql
- datadir = /usr/local/mysql/data
- log-error = /usr/local/mysql/log/mysqld.log
- pid-file = /usr/local/mysql/pid/mysqld.pid
- socket = /usr/local/mysql/tmp/mysql.sock
- character-set-server=utf8
- default-storage-engine=Innodb
- max_connections=500
- lower_case_table_names = 1
- interactive_timeout=288000
- wait_timeout=288000
- net_read_timeout=900
- net_write_timeout=900
- max_allowed_packet=1073741824
- log_bin_trust_function_creators=1
- innodb_flush_log_at_trx_commit = 2
- sync_binlog = 2000
-
- key_buffer_size=8G
- read_buffer_size=64K
- sort_buffer_size=256K
- myisam_max_sort_file_size=100G
-
- innodb_buffer_pool_size=10G
- innodb-buffer-pool-instances=8
- innodb_read_io_threads=8
- innodb_write_io_threads=8
- innodb-file-per-table=true
- sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
第二套:使用过程中发现第一套占用内存略多,这套占用内存小一点,后面补充了这个第二套配置。
- [mysqld]
- port = 13306
- basedir =/usr/local/mysql
- datadir = /usr/local/mysql/data
- log-error = /usr/local/mysql/log/mysqld.log
- pid-file = /usr/local/mysql/pid/mysqld.pid
- socket = /usr/local/mysql/tmp/mysql.sock
-
- #默认加密方式
- default-authentication-plugin=mysql_native_password
-
-
- # 服务端使用的字符集
- character-set-server=utf8mb4
- #1表示大小写不敏感,0表示大小写敏感
- lower_case_table_names=1
-
- skip-external-locking
- key_buffer_size=256M
- #限制server接受的数据包大小
- max_allowed_packet=20M
- table_open_cache=1024
- sort_buffer_size=4M
- net_buffer_length=8K
- read_buffer_size=4M
- read_rnd_buffer_size=512K
- myisam_sort_buffer_size=64M
- thread_cache_size=128
-
- tmp_table_size=128M
- explicit_defaults_for_timestamp=true
- max_connections=200
- max_connect_errors=50
- open_files_limit=65535
-
- # 创建新表时将使用的默认存储引擎
- default_storage_engine=InnoDB
- innodb_data_file_path=ibdata1:10M:autoextend
- innodb_buffer_pool_size=1024M
- innodb_log_file_size=256M
- innodb_log_buffer_size=8M
- innodb_flush_log_at_trx_commit=1
- innodb_lock_wait_timeout=50
- transaction-isolation=READ-COMMITTED
-
- #开启慢查询
- slow_query_log=1
-
- #慢查询最大时间5秒
- long_query_time=5
-
- #时区
- default-time_zone='+8:00'
-
- #关闭binlog日志
- #skip-log-bin
-
- sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
注意:
在MySQL8之后不支持NO_AUTO_CREATE_USER服务。也就是设置sql_mode中不能有NO_AUTO_CREATE_USER,否则后续MySQL无法启动,启动报错如下:
- #新建用户
- adduser mysql
-
- #授权
- chown -R mysql:mysql /usr/local/mysql
这里初始化后会有会打印出一个随机密码(如: root@localhost: JQ=ihNp-x64N ),记住他,后续修改root密码要用。
- bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --lower_case_table_names=1
-
- 选项说明:
- –initialize 初始化(真正开始干活)
- –user=mysql 以mysql用户的身份初始化数据库,产生文件都是mysql作为拥有者
- –basedir=xxx mysql其安装目录,非常重要
- –lower_case_table_names=1 不区分大小写,初始化不指定,必须重装才能解决,非常重要
- [准备操作] 不建立mysqld.log文件的话后续会报错
- #建立所需
- touch /usr/local/mysql/log/mysqld.log
- #修改所属用户
- chown -R mysql:mysql /usr/local/mysql/log/mysqld.log
-
- 启动方式一:
- #将mysql纳入服务管理,这步不执行的话service mysql start报错
- cp support-files/mysql.server /etc/init.d/mysql
- #启动
- service mysql start
-
- 启动方式二:
- #启动MySQL
- systemctl start mysqld
- #停止MySQL
- systemctl stop mysqld
- #查看MySQL运行状态
- systemctl status mysqld
- #设置MySQL开机自启
- systemctl enable mysqld
这里解答下为什么方式一要复制 mysql.server 到 /etc/init.d/mysql
/etc/init.d/xxxx xxxx这样的方式是老版本Linux使用的服务管理方式(针对从官方软件仓库或官方镜像源安装的软件),针对CentOS来说,是CentOS 6.9及其以下版本才用这样的方式启动MySQL服务,从CentOS 7开始,改成了systemd管理系统服务,这样可以用方式二来管理服务。
摘于:知乎 https://www.zhihu.com/question/455654934
启动成功后修改环境变量,环境变量修改完后加载环境变量,然后输入mysql测试环境变量是否配置成功。
- #打开/etc/profile文件编辑
- sudo vim /etc/profile
-
- #文件/etc/profile最下面加入如下内容
- #MYSQL_HOME
- export MYSQL_HOME=/usr/local/mysql
- export PATH=$PATH:$MYSQL_HOME/bin
-
- #修改保存后加载环境变量
- source /etc/profile
首次启动会报错:
- #mysql.sock文件路径不对的问题
- #在/tmp下创建一个link:
- ln -s /usr/local/mysql/tmp/mysql.sock /tmp/mysql.sock
解决报错问题后重新登录:
- #root登录
- mysql -u root -p
-
- #输入初始化数据库时让记住的密码
- JQ=ihNp-x64N
-
- #修改密码,注意如果密码不符合配置的密码策略,会报错,密码可以复杂点
- alter user root@localhost identified by '123456';
报错1:
error: log-error set to ‘/usr/local/mysql/log/mysqld.log’, however file don’t exists. Create writable for user ‘mysql’.
ERROR! The server quit without updating PID file (/usr/local/mysql/pid/mysqld.pid).=
需要建立所需文件并修改文件属主后再次启动。
- #建立所需
- touch /usr/local/mysql/log/mysqld.log
- #修改所属用户
- chown -R mysql:mysql /usr/local/mysql/log/mysqld.log
报错2:
ERROR! The server quit without updating PID file (/usr/local/mysql/pid/mysqld.pid).=
可以查看日志文件/usr/local/mysql/log/mysqld.log确认具体原因。
比如:在MySQL8之后不支持NO_AUTO_CREATE_USER服务。
报错3:
mysql.sock文件路径不对的问题
在/tmp下创建一个link:ln -s /usr/local/mysql/tmp/mysql.sock /tmp/mysql.sock
一般都会通过Navicat连接,但root用户默认只能本地访问。
- #使用mysql数据库
- use mysql;
-
- #查看root账号权限
- select user,host from user;
-
- #如果root不是 %,使用语句更新
- update user set host = '%' where user = 'root';
-
- #修改后仍无法远程访问可重启下服务
- service mysql restart
Navicat连接时报错 Authentication plugin ‘caching_sha2_password‘ cannot be loaded
这个问题就是MySQL使用了caching_sha2_password加密方式但Navicat却找不到某个必需的文件。可通过修改root加密方式来解决。
- # 选择数据库mysql
- use mysql;
- #只修改root加密方式,这里还需定义密码,注意如果密码不符合配置的密码策略,会报错,密码可以复杂点
- ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123@#a';
配置完成后再测试下连接,可以连接成功了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。