当前位置:   article > 正文

Linux环境离线安装MySQL8.0.33_已经下载了mysql-connector-odbc-8.3.0-linux-glibc2.28-x8

已经下载了mysql-connector-odbc-8.3.0-linux-glibc2.28-x86-64bit.tar.gz 要安装

目录

一、准备

1、检查libaio.so.1

2、卸载删除原有的mariadb

3、删除my.cnf

4、下载mysql安装包

二、安装

1、上传mysql

2、建立mysql所需目录

3、建立配置文件my.cnf

4、创建mysql用户并授权

5、初始化数据库

6、启动MySQL数据库

7、配置MySQL环境变量

8、修改root登录密码

 三、常见启动报错处理

四、配置

1、开启MySQL远程连接

 2、解决Navicat连接报错“caching_sha2_password”


一、准备

1、检查libaio.so.1

mysql启动需要这个包,安装前提前检查下有没,没有则需要安装。

  1. ###查找
  2. whereis libaio.so.1
  3. ###如果没有则安装
  4. #在线安装
  5. yum install -y libaio
  6. #离线安装
  7. rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm

2、卸载删除原有的mariadb

 卸载删除原有的mariadb,否则可能会报异常。 

  1. #查询原有的mariadb环境
  2. rpm -qa|grep mariadb
  3. #卸载操作,rpm -e --nodeps后续跟着相应查出的mariadb即可,--nodeps为忽略依赖
  4. rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

3、删除my.cnf

如果之前安装过mysql卸载了,可查看下有无my.cnf并删除

  1. #查找
  2. find / -name my.cnf
  3. #删除
  4. rm -rf /etc/my.cnf

4、下载mysql安装包

官网地址:MySQL :: Download MySQL Community Server (Archived Versions)icon-default.png?t=N7T8https://downloads.mysql.com/archives/community/

根据自己的操作系统情况选择下载,我选了第一个“mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz”

注意:下载时确认下版本,下图红框处glibc版本需要与mysql显示的版本一致。

二、安装

1、上传mysql

  1. #将文件mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz上传到服务器
  2. #解压
  3. tar -zxvf mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz
  4. #移动到要安装的目录并重命名
  5. mv mysql8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql

2、建立mysql所需目录

  1. #建立mysql所需目录 /usr/local/mysql下建立
  2. mkdir data
  3. mkdir log
  4. mkdir pid
  5. mkdir tmp

3、建立配置文件my.cnf

  1. #编辑my.cnf
  2. vim my.cnf

添加如下内容(二选一):

第一套:

  1. [mysqld]
  2. port = 3306
  3. basedir =/usr/local/mysql
  4. datadir = /usr/local/mysql/data
  5. log-error = /usr/local/mysql/log/mysqld.log
  6. pid-file = /usr/local/mysql/pid/mysqld.pid
  7. socket = /usr/local/mysql/tmp/mysql.sock
  8. character-set-server=utf8
  9. default-storage-engine=Innodb
  10. max_connections=500
  11. lower_case_table_names = 1
  12. interactive_timeout=288000
  13. wait_timeout=288000
  14. net_read_timeout=900
  15. net_write_timeout=900
  16. max_allowed_packet=1073741824
  17. log_bin_trust_function_creators=1
  18. innodb_flush_log_at_trx_commit = 2
  19. sync_binlog = 2000
  20. key_buffer_size=8G
  21. read_buffer_size=64K
  22. sort_buffer_size=256K
  23. myisam_max_sort_file_size=100G
  24. innodb_buffer_pool_size=10G
  25. innodb-buffer-pool-instances=8
  26. innodb_read_io_threads=8
  27. innodb_write_io_threads=8
  28. innodb-file-per-table=true
  29. sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

第二套:使用过程中发现第一套占用内存略多,这套占用内存小一点,后面补充了这个第二套配置。

  1. [mysqld]
  2. port = 13306
  3. basedir =/usr/local/mysql
  4. datadir = /usr/local/mysql/data
  5. log-error = /usr/local/mysql/log/mysqld.log
  6. pid-file = /usr/local/mysql/pid/mysqld.pid
  7. socket = /usr/local/mysql/tmp/mysql.sock
  8. #默认加密方式
  9. default-authentication-plugin=mysql_native_password
  10. # 服务端使用的字符集
  11. character-set-server=utf8mb4
  12. #1表示大小写不敏感,0表示大小写敏感
  13. lower_case_table_names=1
  14. skip-external-locking
  15. key_buffer_size=256M
  16. #限制server接受的数据包大小
  17. max_allowed_packet=20M
  18. table_open_cache=1024
  19. sort_buffer_size=4M
  20. net_buffer_length=8K
  21. read_buffer_size=4M
  22. read_rnd_buffer_size=512K
  23. myisam_sort_buffer_size=64M
  24. thread_cache_size=128
  25. tmp_table_size=128M
  26. explicit_defaults_for_timestamp=true
  27. max_connections=200
  28. max_connect_errors=50
  29. open_files_limit=65535
  30. # 创建新表时将使用的默认存储引擎
  31. default_storage_engine=InnoDB
  32. innodb_data_file_path=ibdata1:10M:autoextend
  33. innodb_buffer_pool_size=1024M
  34. innodb_log_file_size=256M
  35. innodb_log_buffer_size=8M
  36. innodb_flush_log_at_trx_commit=1
  37. innodb_lock_wait_timeout=50
  38. transaction-isolation=READ-COMMITTED
  39. #开启慢查询
  40. slow_query_log=1
  41. #慢查询最大时间5
  42. long_query_time=5
  43. #时区
  44. default-time_zone='+8:00'
  45. #关闭binlog日志
  46. #skip-log-bin
  47. 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无法启动,启动报错如下:

4、创建mysql用户并授权

  1. #新建用户
  2. adduser mysql
  3. #授权
  4. chown -R mysql:mysql /usr/local/mysql

5、初始化数据库

这里初始化后会有会打印出一个随机密码(如: root@localhost: JQ=ihNp-x64N ),记住他,后续修改root密码要用。

  1. bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --lower_case_table_names=1
  2. 选项说明:
  3. –initialize 初始化(真正开始干活)
  4. –user=mysql 以mysql用户的身份初始化数据库,产生文件都是mysql作为拥有者
  5. –basedir=xxx mysql其安装目录,非常重要
  6. –lower_case_table_names=1 不区分大小写,初始化不指定,必须重装才能解决,非常重要

6、启动MySQL数据库

  1. [准备操作] 不建立mysqld.log文件的话后续会报错
  2. #建立所需
  3. touch /usr/local/mysql/log/mysqld.log
  4. #修改所属用户
  5. chown -R mysql:mysql /usr/local/mysql/log/mysqld.log
  6. 启动方式一:
  7. #将mysql纳入服务管理,这步不执行的话service mysql start报错
  8. cp support-files/mysql.server /etc/init.d/mysql
  9. #启动
  10. service mysql start
  11. 启动方式二:
  12. #启动MySQL
  13. systemctl start mysqld
  14. #停止MySQL
  15. systemctl stop mysqld
  16. #查看MySQL运行状态
  17. systemctl status mysqld
  18. #设置MySQL开机自启
  19. 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
 

7、配置MySQL环境变量

启动成功后修改环境变量,环境变量修改完后加载环境变量,然后输入mysql测试环境变量是否配置成功。

  1. #打开/etc/profile文件编辑
  2. sudo vim /etc/profile
  3. #文件/etc/profile最下面加入如下内容
  4. #MYSQL_HOME
  5. export MYSQL_HOME=/usr/local/mysql
  6. export PATH=$PATH:$MYSQL_HOME/bin
  7. #修改保存后加载环境变量
  8. source /etc/profile

8、修改root登录密码

首次启动会报错:

  1. #mysql.sock文件路径不对的问题
  2. #在/tmp下创建一个link:
  3. ln -s /usr/local/mysql/tmp/mysql.sock /tmp/mysql.sock

 解决报错问题后重新登录:

  1. #root登录
  2. mysql -u root -p
  3. #输入初始化数据库时让记住的密码
  4. JQ=ihNp-x64N
  5. #修改密码,注意如果密码不符合配置的密码策略,会报错,密码可以复杂点
  6. 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).=

需要建立所需文件并修改文件属主后再次启动。

  1. #建立所需
  2. touch /usr/local/mysql/log/mysqld.log
  3. #修改所属用户
  4. 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

四、配置

1、开启MySQL远程连接

一般都会通过Navicat连接,但root用户默认只能本地访问。

  1. #使用mysql数据库
  2. use mysql;
  3. #查看root账号权限
  4. select user,host from user;
  5. #如果root不是 %,使用语句更新
  6. update user set host = '%' where user = 'root';
  7. #修改后仍无法远程访问可重启下服务
  8. service mysql restart

 2、解决Navicat连接报错“caching_sha2_password”

Navicat连接时报错 Authentication plugin ‘caching_sha2_password‘ cannot be loaded

  • mysql5 默认加密方式是 my_native_password
  • mysql8 默认加密方式是 caching_sha2_password

这个问题就是MySQL使用了caching_sha2_password加密方式但Navicat却找不到某个必需的文件。可通过修改root加密方式来解决。

  1. # 选择数据库mysql
  2. use mysql;
  3. #只修改root加密方式,这里还需定义密码,注意如果密码不符合配置的密码策略,会报错,密码可以复杂点
  4. ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123@#a';

配置完成后再测试下连接,可以连接成功了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/582432
推荐阅读
相关标签
  

闽ICP备14008679号