0.说明
在不联网的环境下安装 MySQL 5.7 ,从官网下载离线安装包
现在用CentOS 7系统模拟服务器离线安装MySQL 5.7
在网上看到一个教程挺新的,参照着他的教程结合我的情况安装了一遍
参考链接:
https://www.jellythink.com/archives/14
1.检查是否安装了 MySQL
rpm -qa | grep mysql
2.检查是否安装了mariadb
rpm -qa | grep mariadb
3.如果已经存在则卸载
rpm -e --nodeps xxx
4.下载mysql-5.7.30
下载地址 https://downloads.mysql.com/archives/community/
5.上传
将下载的离线安装包mysql-5.7.30-linux-glibc2.12-x86_64.tar上传到/app/package中
6.解压离线安装包
# 解压缩 tar -xvf /app/package/mysql-5.7.30-linux-glibc2.12-x86_64.tar # 会得到一个mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz文件,再解压缩 tar -zxvf /app/package/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /app/soft # 建立软链接,便于以后版本升级 ln -s mysql-5.7.30-linux-glibc2.12-x86_64 mysql # 修改mysql文件夹下所有文件的用户和用户组 chown -R share:share mysql/
7.创建临时目录、数据目录和日志目录
su share mkdir -p /app/mysql/3306/data mkdir -p /app/mysql/3306/log mkdir -p /app/mysql/3306/tmp
8.创建配置文件
# 创建配置文件 cd /etc # 在my.cnf文件中添加对应的配置项 vi my.cnf
my.cnf 内容如下
[client] # 客户端设置,即客户端默认的连接参数 port = 3306 # 默认连接端口 socket = /app/mysql/3306/tmp/mysql.sock # 用于本地连接的socket套接字,mysqld守护进程生成了这个文件 [mysqld] # 服务端基本设置 # 基础设置 server-id = 1 # Mysql服务的唯一编号 每个mysql服务Id需唯一 port = 3306 # MySQL监听端口 basedir = /app/soft/mysql # MySQL安装根目录 datadir = /app/mysql/3306/data # MySQL数据文件所在位置 tmpdir = /app/mysql/3306/tmp # 临时目录,比如load data infile会用到 socket = /app/mysql/3306/tmp/mysql.sock # 为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件 pid-file = /app/mysql/3306/log/mysql.pid # pid文件所在目录 skip_name_resolve = 1 # 只能用IP地址检查客户端的登录,不用主机名 character-set-server = utf8mb4 # 数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节) transaction_isolation = READ-COMMITTED # 事务隔离级别,默认为可重复读,MySQL默认可重复读级别 collation-server = utf8mb4_general_ci # 数据库字符集对应一些排序等规则,注意要和character-set-server对应 init_connect='SET NAMES utf8mb4' # 设置client连接mysql时的字符集,防止乱码 lower_case_table_names = 1 # 是否对sql语句大小写敏感,1表示不敏感 max_connections = 400 # 最大连接数 max_connect_errors = 1000 # 最大错误连接数 explicit_defaults_for_timestamp = true # TIMESTAMP如果没有显示声明NOT NULL,允许NULL值 max_allowed_packet = 128M # SQL数据包发送的大小,如果有BLOB对象建议修改成1G interactive_timeout = 1800 # MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭 wait_timeout = 1800 # MySQL默认的wait_timeout值为8个小时, interactive_timeout参数需要同时配置才能生效 tmp_table_size = 16M # 内部内存临时表的最大值 ,设置成128M;比如大数据量的group by ,order by时可能用到临时表;超过了这个值将写入磁盘,系统IO压力增大
9.安装数据库
# 进入MySQL的bin目录 cd /app/soft/mysql/bin # 初始化数据库,并指定启动mysql的用户 ./mysqld --initialize --user=share [share@s106 bin]$ pwd /app/soft/mysql/bin [share@s106 bin]$ ./mysqld --initialize --user=share 2020-10-21T16:19:16.622570Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000) 2020-10-21T16:19:16.622664Z 0 [Warning] Changed limits: max_connections: 214 (requested 400) 2020-10-21T16:19:16.622666Z 0 [Warning] Changed limits: table_open_cache: 400 (requested 2000) 2020-10-21T16:19:16.924699Z 0 [Warning] InnoDB: New log files created, LSN=45790 2020-10-21T16:19:16.996135Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2020-10-21T16:19:17.065945Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 2aaaffa2-13b9-11eb-b08c-000c294e627f. 2020-10-21T16:19:17.066801Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2020-10-21T16:19:17.268919Z 0 [Warning] CA certificate ca.pem is self signed. 2020-10-21T16:19:17.577435Z 1 [Note] A temporary password is generated for root@localhost: 5jee7Rjnuw>h
这里最好指定启动mysql的用户名,否则就会在启动MySQL时出现权限不足的问题
安装完成后,在my.cnf中配置的datadir目录下生成一个error.log文件,里面记录了root用户的随机密码。
10.设置开机自启动服务
# 复制启动脚本到资源目录 cp /app/soft/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld # 增加mysqld服务控制脚本执行权限 chmod +x /etc/rc.d/init.d/mysqld # 将mysqld服务加入到系统服务 chkconfig --add mysqld # 检查mysqld服务是否已经生效 chkconfig --list mysqld # 切换至mysql用户,启动mysql service mysqld start
11.配置环境变量
为了更好的操作mysql,配置环境变量。
# 切换至mysql用户 su - share # 修改配置文件,增加export PATH=$PATH:/app/soft/mysql/bin vi .bash_profile # 立即生效 source .bash_profile
12.登陆,修改密码
# 登陆mysql mysql -uroot -p # 修改root用户密码 set password for root@localhost=password("123456");