前言
- MYSQL-LINUX7
-
-
- 系统环境
- 依赖环境安装
- 下载源码包
- 创建用户和建立数据目录并赋予用户目录权限
- 编译安装
- 配置my.cnf
- 配置启动脚本
- 如果报错,修改/etc/init.d/mysqld
- 启动MySQL服务
- 重置密码
MYSQL-LINUX7
系统环境
systemctl stop firewalld
systemctl disabled firewalld
setenforce 0
iptables -F
[root@yw-test yum.repos.d]# vim /etc/selinux/config
SELINUX=disabled
#内核参数修改
echo "vm.swappiness=10">>/etc/sysctl.conf
echo "net.ipv4.tcp_tw_recycle=1">>/etc/sysctl.conf
echo "net.ipv4.tcp_tw_reuse=1">>/etc/sysctl.conf
echo "vm.dirty_background_ratio=8">>/etc/sysctl.conf
echo "* soft nofile 1024000" >>/etc/security/limits.conf
echo "* hard nofile 1024000" >>/etc/security/limits.conf
sysctl -p
依赖环境安装
yum -y install wget cmake gcc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel
#检查libaio,如果没有yum install libaio libaio-devel
[root@localhost ~]# rpm -qa |grep libaio
libaio-devel-0.3.109-13.el7.x86_64
libaio-0.3.109-13.el7.x86_64
下载源码包
cd /u-data
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.12.tar.gz
创建用户和建立数据目录并赋予用户目录权限
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
mkdir -p /u-data/mysql
mkdir -p /u-data/mysql/data
chown -R mysql.mysql /u-data/mysql/*
chmod -R 755 /u-data/mysql
编译安装
tar -zxvf mysql-boost-8.0.12.tar.gz
cd mysql-8.0.12
cmake . -DCMAKE_INSTALL_PREFIX=/u-data/mysql \ #安装目录
-DMYSQL_DATADIR=/u-data/mysql/data \ #数据存放目录
-DSYSCONFDIR=/etc \
-DMYSQL_TCP_PORT=3306 \
-DWITH_BOOST=/u-data/mysql-8.0.12/boost \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNODB_MEMCACHED=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1
make -j6
make install -j6
echo "PATH=/u-data/mysql/bin:$PATH" >> /etc/profile
source /etc/profile
mysqld --initialize-insecure --user=mysql --basedir=/u-data/mysql --datadir=/u-data/mysql/data
配置my.cnf
vim /etc/my.cnf
[client]
port=3306
socket=/u-data/mysql/mysql.sock
[mysqld]
port=3306
socket=/u-data/mysql/mysql.sock
basedir=/u-data/mysql #安装目录
datadir=/u-data/mysql/data #数据存放目录
pid-file=/u-data/mysql/data/mysql.pid
log-error=/u-data/mysql/logs/error.log
transaction_isolation = READ-COMMITTED #设置隔离级别的参数 = 读提交,不允许脏读,但允许不可重复读
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
lower_case_table_names = 0 #表名存储为给定的大小和比较是区分大小写的
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
default_authentication_plugin = mysql_native_password
wait_timeout=600 #非交互式连接超时时间,默认的连接mysql api程序,jdbc连接数据库等
interactive_timeout=240 #交互式连接超时时间(mysql工具、mysqldump等)
default_storage_engine = innodb #表示永久表(permanent tables)的默认存储引擎
max_connections = 4000 #设置最大连接(用户)数
max_connect_errors = 1000 #负责阻止过多尝试失败的客户端以防止暴力破解密码的情况
table_open_cache = 1024 #设置table高速缓存的数量
max_allowed_packet = 128M #服务器端和客户端在一次传送数据包的过程当中最大允许的数据包大小
open_files_limit = 65535 #mysqld进程能使用的最大文件描述(FD)符数量
server-id=1
enforce_gtid_consistency=on #启动临时表功能
log-slave-updates=1 #主从同步的设置
log-bin=master-bin
log-bin-index = master-bin.index
relay-log = relay-log
relay-log-index = relay-log.index
binlog_format=row #日志中会记录成每一行数据被修改的形式,然后在 slave 端再对相同的数据进行修改
skip-name-resolve #
log-slave-updates=1
relay_log_purge = 0 #禁止SQL线程在执行完一个relay-log后自动将其删除
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /u-data/mysql/logs/mysql-slow.log
mkdir -p /u-data/mysql/logs
touch /u-data/mysql/logs/mysql-slow.log
touch /u-data/mysql/logs/error.log
配置启动脚本
cp ./support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql-8.0.12]# vim /etc/init.d/mysqld
修改
安装路径
46: basedir=/u-data/mysql
数据库文件存放路径
47: datadir=/u-data/mysql/data
chmod +x /etc/init.d/mysqld
[root@localhost mysql-8.0.12]# yum -y remove mariadb-libs.x86_64 #不一定是这个版本
[root@localhost mysql-8.0.12]# yum -y remove mysql*
[root@localhost mysql-8.0.12]# service mysqld start
Starting MySQL.Logging to '/usr/local/mysql/data/mysql-error.log'.
SUCCESS!
如果报错,修改/etc/init.d/mysqld
##报错
Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/data/web-20200325.pid).
##解决
编辑/etc/init.d/mysqld,找到start模块,添加--user=root到mysqld_safe 即可
如果图片无法查看,可以看连接:
https://blog.csdn.net/u010227042/article/details/105126495/
如果手动执行:
去启动项修改266行成为以下即可:
266 $bindir/mysqld_safe --user=root --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
#添加到系统服务
chkconfig --add mysqld
检查服务是否生效
chkconfig --list mysqld
启动MySQL服务
service mysqld start
service mysqld restart
service mysqld stop
重置密码
方法【1】
[root@localhost mysql-8.0.12]# mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
方法【2】
#vim /etc/my.cnf
在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程
skip-grant-tables
service mysql restart
[root@localhost mysql-8.0.12]# mysql
先:
mysql> flush privileges;
后:
mysql> alter user 'root'@'localhost' identified by 'Abc@2020';
再退出重试
mysql> quit
查看mysql版本:
mysql --version
删除跳过密码验证
#vim /etc/my.cnf
在[mysqld]删除“skip-grant-tables”