MySQL 8.0.19 Linux平台安装 Part 2
从今天开始MySQL相关方面的东西
今天是关于MySQL的安装
系统为 redhat 7.4
数据库为MySQL 8.0.19
1. 目录规划
目录名称 |
参数名称 |
路径地址 |
---|---|---|
安装目录 |
basedir |
/usr/local/mysql |
数据文件目录 |
datadir |
/data/mysql/data |
临时文件目录 |
tmpdir |
/data/mysql/tmp |
socket文件目录 |
socket |
/data/mysql/data/mysql.sock |
bin日志文件目录 |
log_bin |
/datalog/mysql/binlog |
relay日志文件目录 |
relay_log |
/datalog/mysql/relaylog |
2. MySQL 8.0 下载
https://dev.mysql.com/downloads/mysql/
3. 新建用户及目录
/usr/sbin/groupadd -g 105 mysql
/usr/sbin/useradd -u 105 -g mysql mysql
echo "mysql123" |passwd mysql --stdin
4. 新建目录
mkdir -p /data/mysql/software
mkdir -p /usr/local/mysql
mkdir -p /data/mysql/data
mkdir -p /datalog/mysql/binlog
mkdir -p /datalog/mysql/relaylog
chown -R mysql:mysql /usr/local/mysql
mkdir -p /data/mysql/tmp
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /datalog/mysql/
5. 配置环境变量
su - mysql
vim ~/.bash_profile
export MYSQL_HOME=/usr/local/mysql
export PATH=$HOME/bin:$MYSQL_HOME/bin:$PATH
export LD_LIBRARY_PATH=$MYSQL_HOME/lib:$LD_LIBRARY_PATH
source ~/.bash_profile
6. 建立配置文件
8.0的参数和5.7的参数有些不一样
- expire_logs_days参数被废弃,使用binlog_expire_logs_seconds参数代替
- innodb_undo_tablespaces参数被废弃,8.0会根据innodb_page_size自动建立
- innodb_file_format,innodb_file_format_check,innodb_file_format_max,innodb_large_prefix参数被废弃并移除了
- query_cache_type和query_cache_size参数被废弃
我们这里建立 /etc/my.cnf
[mysql]
user =
password =
socket = /data/mysql/data/mysql.sock
[mysqld]
#-----------------MySQL Basic Setting-----------------#
server-id = 1921680101
port = 3306
user = mysql
pid-file = mysql.pid
character_set_server = utf8mb4
default_storage_engine = InnoDB
skip_name_resolve = 1
lower_case_table_names = 1
explicit_defaults_for_timestamp = 1
open_files_limit = 65535
max_connections = 1000
max_connect_errors = 100000
basedir = /usr/local/mysql
datadir = /data/mysql/data
tmpdir = /data/mysql/tmp
socket = /data/mysql/data/mysql.sock
join_buffer_size = 64M
tmp_table_size = 64M
max_allowed_packet = 32M
read_buffer_size = 16M
read_rnd_buffer_size = 32M
sort_buffer_size = 32M
#-----------------MySQL Log Setting-----------------#
log_error = mysql-error.log
log_bin = /datalog/mysql/binlog/mysql-bin.log
slow_query_log_file = mysql-slow.log
relay_log = /datalog/mysql/relaylog/mysql-relay.log
log_slave_updates = 1
sync_binlog = 1
relay_log_recovery = 1
binlog_format = row
binlog_expire_logs_seconds = 604800
slow_query_log = 1
long_query_time = 2
log_queries_not_using_indexes = 1
log_throttle_queries_not_using_indexes = 10
log_slow_admin_statements = 1
log_slow_slave_statements = 1
min_examined_row_limit = 1000
#-----------------MySQL Replication Setting-----------------#
master_info_repository = TABLE
relay_log_info_repository = TABLE
gtid_mode = on
enforce_gtid_consistency = 1
binlog_rows_query_log_events = 1
#-----------------MySQL InnoDB Setting-----------------#
innodb_page_size = 16384
innodb_buffer_pool_size = 400M
innodb_data_file_path = ibdata1:1G:autoextend
innodb_buffer_pool_instances = 8
innodb_file_per_table = 1
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 5
innodb_io_capacity = 800
innodb_io_capacity_max = 2000
innodb_flush_method = O_DIRECT
#innodb_file_format = Barracuda
#innodb_file_format_max = Barracuda
innodb_flush_neighbors = 1
innodb_log_file_size = 2G
innodb_log_buffer_size = 16777216
innodb_print_all_deadlocks = 1
innodb_strict_mode = 1
innodb_sort_buffer_size = 67108864
#-----------------MySQL semi Replication Setting-----------------#
#plugin_dir = /usr/local/mysql/lib/plugin
#plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
#loose_rpl_semi_sync_master_enabled = 1
#loose_rpl_semi_sync_slave_enabled = 1
#loose_rpl_semi_sync_master_timeout = 5000
修改my.cnf权限
chown mysql:mysql /etc/my.cnf
7. 依赖包检查
libaio-0.3.107-10.el6.x86_64
libaio-devel-0.3.107-10.el6.x86_64
lvm2-2.02.143-7.el6_8.1.x86_64
8. 卸载以前版本
如果有以前版本的MySQL ,则需要先下载
如只有lib库则可以不用动
RedHat Enterprise Linux 6适用】
# rpm -qa|grep -i mysql
mysql-libs-5.1.71-1.el6.x86_64
qt-mysql-4.6.2-26.el6_4.x86_64
mysql-5.1.71-1.el6.x86_64
mysql-server-5.1.71-1.el6.x86_64
#yum remove mysql-5.1.71-1.el6.x86_64 qt-mysql-4.6.2-26.el6_4.x86_64 mysql-libs-5.1.71-1.el6.x86_64 mysql-server-5.1.71-1.el6.x86_64
【RedHat Enterprise Linux 7适用】
# rpm -qa|grep -i mariadb*
mariadb-server-5.5.52-1.el7.x86_64
mariadb-libs-5.5.52-1.el7.x86_64
mariadb-embedded-5.5.52-1.el7.x86_64
mariadb-test-5.5.52-1.el7.x86_64
mariadb-bench-5.5.52-1.el7.x86_64
mariadb-5.5.52-1.el7.x86_64
mariadb-devel-5.5.52-1.el7.x86_64
mariadb-embedded-devel-5.5.52-1.el7.x86_64
# yum remove -y mariadb*
9. 解压文件
9.1 解压安装文件
su - mysql
tar xzvf mysql-8.0.19-el7-x86_64.tar.gz -C /usr/local/mysql/ --strip-components=1
9.2 配置服务文件
这里我们使用systectl来管理数据库的启停
root用户
vi /usr/lib/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
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
PIDFile=/data/mysql/data/mysqld.pid
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Execute pre and post scripts as root
PermissionsStartOnly=true
# Needed to create system tables
#ExecStartPre=/usr/bin/mysqld_pre_systemd
# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/data/mysql/data/mysqld.pid $MYSQLD_OPTS
#注意这里要加上 --daemonize
# Use this to switch malloc implementation
#EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 65536
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
10. 初始化数据库
接下来我们初始化MySQL
# su - mysql
$cd /usr/local/mysql
$/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
初始化过程中可以通过error文件查看进度
tail -f /data/mysql/data/mysql-error.log
11. 启动数据库
root用户
systemctl start mysqld
后续可以使用如下命令启停数据库
systemctl stop mysqld
systemctl start mysqld
systemctl restart mysqld
设置MySQL自启动
systemctl enable mysqld
12. 连接数据库
默认密码在error文件中有
cat /data/mysql/data/mysql-error.log |grep password
使用如下命令连接
mysql -S /data/mysql/data/mysql.sock -uroot -ppassword
第一次登陆需要修改密码
alter user 'root'@'localhost' identified with mysql_native_password by 'password';
flush privileges;
连接后的安全性设置参见MySQL常见命令
好了 MySQL的 Linux 安装就先讲到这里
后续内容尽情期待
- [快学Python3]Number(数字)
- [快学Python3]基础知识
- [快学Python3]开发工具
- [快学Python3]解析器
- [快学Python3]函数
- [快学Python3]循环控制
- [linux][kprobe]谁动了我的文件---使用kprobe找到目标进程
- [快学Python3]if条件控制
- codeforces 767A Snacktower(模拟)
- [快学Python3]Sets(集合)
- [nptl][rwlock]pthread rwlock原理分析
- [快学Python3]Dictionary(字典)
- [快学Python3]List(列表)
- [快学Python3]Tuple(元组)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 组合体惯量法A: matlab程序—机械臂动力学建模
- vue+echarts 实现两个小例子
- 2020CV秋招求职的若干思考
- 快速学习-ElasticJob高可用
- 快速学习-Elastic调度部署
- 快速学习-ElasticJob应用API
- 快速学习-ElasticJob-Lite Quick Start
- 快速学习-ElasticJob-Cloud Quick Start
- @JacksonInject与@JsonAlias注解-JSON框架Jackson精解第4篇
- 医疗NLP相关数据集整理
- 我们如何用 K8S 搞定 1000 个应用的测试环境
- 如何实现rsync多并发同步?
- 分享Linux内存占用几个案例
- 30个编程小技巧,提高代码性能
- OpenGL ES 3D 模型的加载和渲染