官网下载最新版本,这里下载mysql 8.0.32,将下载下来的压缩包上传至服务器:
MySQL :: Download MySQL Community Server
相关依赖都装一下
上传至服务器
建立用户
useradd mysql -s /sbin/nologin
建立对应目录,并改变拥有者
#data目录需位于lvm且独立磁盘空间便于后续容量扩充
mkdir /data460/mysql
#存放mysql 二进制文件
mkdir -p /data460/mysql/mysql8032/
#存放mysql 数据文件
mkdir -p /data460/mysql/data
#存放二进制日志
mkdir -p /data460/mysql/binlog
#存放mysql 参数文件
mkdir -p /data460/mysql/my.cnf.d
mkdir -p /data460/mysql/
mkdir -p /run/mysqld/
chown -R mysql:mysql /run/mysqld/
chown -R mysql:mysql /data460/mysql
3、解压缩mysql压缩包至 /data460/mysql/mysql8032/
tar -xzvf mysql-8.0.32-el7-x86_64.tar.gz --strip 1 -C /data460/mysql/mysql8032/
改变用户
chown -R mysql:mysql /data/mysqlhospital/mysql8035
4建立mysql参数文件,参数值根据服务器配置以及实际环境调整:
cd /data460/mysql/my.cnf.d/
touch mysql-server.cnf
5参数如下所示,根据实际情况更改
[mysqld]
user=mysql
port=13306
#字符集
default-storage-engine=INNODB
character-set-server=utf8mb4
collation-server=utf8mb4_bin
#配置serverid ,默认使用ip地址最后一项
server-id = 202
datadir=/data460/mysql/data #指定mysql数据文件目录
socket=/tmp/mysql.sock #指定mysql scoket文件
log-error=/data460/mysql/mysqlerr.log #指定mysql 错误日志文件
pid-file=/run/mysqld/mysqld.pid #指定mysqld 进程pid 文件
log-bin=mysql-bin #开启mysql binlog
sync_binlog=1 #指定每次事务的binlog都持久化到磁盘
binlog_format=row #指定mysql binglog 格式为row
binlog_expire_logs_seconds=604800
max-binlog-size = 500M
log-bin = /data460/mysql/binlog/mysql-bin.log
character-set-server=utf8mb4 #指定mysql数据库字符集
skip-name-resolve #禁用DNS解析, ip解析成主机名
max_connections=1000 #最大连接数
lock_wait_timeout=60 #指定mysql metadata lock 超时值为60s
#innodb
innodb_buffer_pool_size = 1G #指定buffer pool 内存大小
innodb_flush_log_at_trx_commit=1 #每次事务的redo log都直接持久化到磁盘
innodb_lock_wait_timeout=120 #指定innodb 行锁超时为120秒,默认值
innodb_file_per_table=ON #开启表独立表空间
innodb_print_all_deadlocks=on ##开启死锁日志记录
innodb_rollback_on_timeout=on #指定事务超时后回滚整个事务
#innodb日志文件大小
innodb_log_file_size = 512M
#最大数据包大小,支持大数据量插入更新及查询,最大值为1G,此处设置为512M
max_allowed_packet=512M
# 数据表默认时区
default-time-zone='+08:00'
6.变更参数文件所有者
chown mysql:mysql mysql-server.cnf
7.创建错误文件并改变用户
touch /data460/mysql/mysqlerr.log
chown mysql:mysql /data460/mysql/mysqlerr.log
初始化数据库
/data460/mysql/mysql8032/bin/mysqld --defaults-file=/data460/mysql/my.cnf.d/mysql-server.cnf --initialize --user=mysql --datadir=/data460/mysql/data
另外一个目录
/data/mysqlhospital/mysql8035/bin/mysqld --defaults-file=/data/mysqlhospital/my.cnf.d/mysql-server.cnf --initialize --user=mysql --datadir=/data/mysqlhospital/data/
启动服务
/data460/mysql/mysql8032/bin/mysqld_safe --defaults-file=/data460/mysql/my.cnf.d/mysql-server.cnf
另外一个目录
/data/mysqlhospital/mysql8035/bin/mysqld_safe --defaults-file=/data/mysqlhospital/my.cnf.d/mysql-server.cnf
ctl+z 挂起
bg %1 放入后台
path加入mysql二进制路径
vim /root/.bash_profile
加入
PATH=/data460/mysql/mysql8032/bin/:$PATH
source /root/.bash_profile
查找初始密码
grep password /data460/mysql/mysqlerr.log
进入更改初始密码
mysql --socket=/data/mysqlhospital/mysql.sock --port=13302 -uroot -p
alter user root@'localhost' identified by "gDEhEdJG35x0*hAB";
#创建远程用户
create user root@'%' identified by "gDEhEdJG35x0*hAB";
grant all privileges on *.* to root@'%';
flush privileges;
在系统级别修改mysql打开最大文件数(非必选项,最好修改)
2.1 编辑系统配置文件:
vim /etc/security/limits.conf
在文件中增加如下:
Mysql 打开文件限制和打开进程限制
mysql hard nofile 65535
mysql soft nofile 65535
mysql hard nproc 65535
mysql soft nproc 65535
重启系统
停止mysql
mysqladmin -uroot -p shutdown
加入自启动
vim /etc/systemd/system/mysqld.service
# cat /etc/systemd/system/mysqld.service
[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
[Service]
User=mysql
Group=mysql
PIDFile=/run/nginx.pid #修改成mysql的启动文件及配置文件路径
ExecStart=/data460/mysql/mysql8032/bin/mysqld_safe --defaults-file=/data460/mysql/my.cnf.d/mysql-server.cnf
[Install]
WantedBy=multi-user.target
保存成功后加入开机自启动,并使用reload加载刚刚配置的服务。
systemctl enable mysqld
systemctl daemon-reload
使用journalctl查看日志
journalctl -f -u mysqld.service
systemctl也可以支持启动多个mysql实例,只需要在服务命名时进行区分。例如将服务名mysqld.service 可以写成mysql8.0.service 和mysql5.7.service ,并进行相应的启动文件命令修改即可。
mysql8 初始化不区分大小写。
mysql8.0 要求我们不能在initialize之后再更改 lower_case_table_names 的值,也就是说,再通过更改 my.cnf 文件是不管用的。另外,mysql8.0的状态只能为不区分大小写或区分大小写,一种情况
所以在初始化时设置 lower-case-table-names=1
mysqld --initialize-insecure --user mysql --datadir=/opt/data --lower-case-table-names=1
vi my.cnf 新添加
lower_case_table_names=1
重启
systemctl restart mysqld