#环境准备
su - root
--查看当前防火墙状态
systemctl status firewalld
--关闭当前防火墙
systemctl stop firewalld
--设置开机防火墙不启动
systemctl disable firewalld
#yum源安装
yum install -y libaio-devel
yum -y install numactl
#清理历史环境
rpm -qa |grep mariadb
yum -y install numactl
yum remove mariadb-libs.x86_64
#创建用户和组
useradd mysql -s /sbin/nologin
[root@smkrac111 mysql]# id mysql
uid=1005(mysql) gid=1007(mysql) groups=1007(mysql)
#上传并解压 MySQL软件到/app/
[root@db01 app]# mv mysql-5.7.28-linux-glibc2.12-x86_64 mysql
[root@db01 app]# ls -l /app/mysql/
#创建相关目录
#创建软件目录
mkdir -p /app/database
#创建数据目录
mkdir -p /data/3306
#创建日志目录
mkdir -p /binlog/3306
#设置权限
chown -R mysql:mysql /app/ /data/ /binlog
#设置环境变量
vi /etc/profile
#底部添加一行
export PATH=/app/database/mysql/bin:$PATH
#生效配置
source /etc/profile
cd
#初始化系统库表
mysqld --initialize-insecure --user=mysql --basedir=/app/database/mysql --datadir=/data/3306
================================================================================================初始化过程(成功)======================================================================================
2020-07-31T02:14:39.376798Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-07-31T02:14:39.696143Z 0 [Warning] InnoDB: New log files created, LSN=45790
2020-07-31T02:14:39.767299Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2020-07-31T02:14:39.832986Z 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: 96cf6b3f-d2d3-11ea-bcdd-005056b18ce8.
2020-07-31T02:14:39.835927Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2020-07-31T02:14:41.268767Z 0 [Warning] CA certificate ca.pem is self signed.
2020-07-31T02:14:41.533924Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
===============================================================================================================================================================================================
#容易遇到的报错
[error] --initialize specified but the data directory has file in it. Aborting
#处理
rm -rf /data/3306/*
#补充:初始化方式:
(1)mysqld --initialize --user=mysql --basedir=/app/database/mysql --datadir=/data/3306
1.初始化完成后,会有12位临时密码,但是必须在使用MySQL之前重置这个密码
2.密码管理使用严格模式:3种密码复杂度
(2)mysqld --initialize-insecure --user=mysql --basedir=/app/database/mysql --datadir=/data/3306
5.6版本初始化方式
/app/database/mysql/scripts/mysql_install_db --user=mysql --basedir=/app/database/mysql --datadir=/data/3306
#配置文件设置
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/app/database/mysql
datadir=/data/3306
server_id=6
port=3306
socket=/tmp/mysql.sock
explicit_defaults_for_timestamp=true
innodb_file_per_table=on
character_set_server=utf8
log_bin=/data/mysql/1.000001
expire_logs_days=30
slow_query_log=on
long_query_time=3
log_queries_not_using_indexes=on
max_connections=500
symbolic-links=0
innodb_page_size=16384
innodb_buffer_pool_size=100000000
[mysql]
socket=/tmp/mysql.sock
EOF
准备MySQL的启动脚本
cd /app/database/mysql/support-files
#拷贝MySQL的启动脚本值系统软件管理目录中
cp mysql.server /etc/init.d/mysqld
使用systemd管理mysql
cat >/etc/systemd/system/mysqld.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/app/database/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF
启动MySQL数据库
#centos 6 (7也可以)
service mysqld start
#centos 7
chkconfig --add mysqld
systemctl start mysqld
修改MySQL密码
mysql
set password=password('mysql');
mysql 多实例安装
创建目录
mkdir -p /data/330{7,8,9}/data
mkdir -p /binlog/330{7,8,9}
chown -R mysql:mysql /data/330{7,8,9}/data
chown -R mysql:mysql /binlog/330{7,8,9}
修改配置文件
cat > /data/3307/my.cnf <<EOF
[mysqld]
basedir=/app/database/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
log_error=/data/3307/mysql.log
port=3307
server_id=7
log_bin=/data/3307/mysql-bin
EOF
cat > /data/3308/my.cnf <<EOF
[mysqld]
basedir=/app/database/mysql
datadir=/data/3308/data
socket=/data/3308/mysql.sock
log_error=/data/3308/mysql.log
port=3308
server_id=8
log_bin=/data/3308/mysql-bin
EOF
cat > /data/3309/my.cnf <<EOF
[mysqld]
basedir=/app/database/mysql
datadir=/data/3309/data
socket=/data/3309/mysql.sock
log_error=/data/3309/mysql.log
port=3309
server_id=9
log_bin=/data/3309/mysql-bin
EOF
初始化数据
mv /etc/my.cnf /etc/my.cnf.bak
mysqld --initialize-insecure --user=mysql --datadir=/data/3307/data --basedir=/app/database/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3308/data --basedir=/app/database/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3309/data --basedir=/app/database/mysql
准备启动脚本
cat >/etc/systemd/system/mysqld3307.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/app/database/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
LimitNOFILE = 5000
EOF
cat >/etc/systemd/system/mysqld3308.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/app/database/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
LimitNOFILE = 5000
EOF
cat >/etc/systemd/system/mysqld3309.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/app/database/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf
LimitNOFILE = 5000
EOF
启动多实例
systemctl start mysqld3307
systemctl start mysqld3308
systemctl start mysqld3309
检查
netstat -tulnp