CentOS下以二进制方式安装 MySQL 8
创建MySQL用户和相关目录(my.cnf设置的目录)
groupadd mysql
useradd -g mysql -M -s /bin/nologin mysql
mkdir /usr/local/mysql #mysql安装目录
mkdir /data/mysqldb -p #mysql数据目录
mkdir -p /data/logs/mysql/binlog #mysql二进制日志目录
mkdir -p /data/logs/mysql/log #mysql慢日志、错误日志、普通日志存放目录
mkdir -p /data/logs/mysql/mariadb
touch /data/logs/mysql/log/mysql-error.log #配置文件中的错误日志路径是什么就创建什么文件
touch /data/logs/mysql/mariadb/mariadb.log
mkdir -p /opt/mysqltmp #mysql临时表目录
chown mysql:mysql /usr/local/mysql -R
chown mysql:mysql /data/mysqldb -R
chown mysql:mysql /data/logs/mysql -R
chown mysql:mysql /opt/mysqltmp
安装MySQL 8.0
中科大镜像:http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-8.0/
# wget http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-8.0/mysql-8.0.17-linux-glibc2.12-x86_64.tar
# tar -xf mysql-8.0.17-linux-glibc2.12-x86_64.tar
# ls -al mysql-*
-rw-r--r-- 1 root root 665221120 Jun 27 18:05 mysql-8.0.17-linux-glibc2.12-x86_64.tar
-rw-r--r-- 1 7155 31415 480209016 Jun 27 16:34 mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
-rw-r--r-- 1 7155 31415 34514636 Jun 27 17:42 mysql-router-8.0.17-linux-glibc2.12-x86_64.tar.xz
-rw-r--r-- 1 7155 31415 150488620 Jun 27 18:05 mysql-test-8.0.17-linux-glibc2.12-x86_64.tar.xz
# mv mysql-8.0.17-linux-glibc2.12-x86_64.tar mysql-8.0.17-linux-glibc2.12-x86_64-all.tar
# xz -k -d mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
# tar -xf mysql-8.0.17-linux-glibc2.12-x86_64.tar
# mv mysql-8.0.17-linux-glibc2.12-x86_64 /usr/local/mysql
服务启动脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
多个mysql实例不可能共用同一个安装目录和数据存放目录,每个mysql实例都应有自己对应的目录,多实例需要修改mysql服务启动脚本中的目录位置,如果不是多实例这一步可免
vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data/mysqldb
配置文件
在MySQL数据库中,可以没有配置文件,在这种情况下,MySQL会以安装编译时的默认参数设置启动实例。使用以下命令查看当MYSQL数据库实例启动时,会在哪些位置查找配置文件
# /usr/local/mysql/bin/mysql --help | grep my.cn
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
# mkdir /usr/local/mysql/etc
# vim /usr/local/mysql/etc/my.cnf
MySQL里面有启动参数、系统参数,启动参数通过show variables无法查询到,可以在mysqld的选项中查到,例如关于二进制日志有Startup Options Used with Binary Logging、System Variables Used with Binary Logging两种参数
配置文件my.cnf详解:
[client]
port = 3306 #客户端所连接的端口号
socket = /tmp/mysql.sock #客户端所连接的sock文件存放位置
[mysqld]
#base
port = 3306 #mysql的默认端口号,可以修改
user = mysql #mysql用户指定
socket = /tmp/mysql.sock #连接所使用的端口号
pid-file = /var/run/mysql/mysql.pid #进程运行的主PID文件
basedir = /usr/local/mysql #Mysql安装目录
datadir = /data/mysqldb #Mysql数据目录
tmpdir = /opt/mysqltmp #Mysql临时表目录
open_files_limit = 10240 #打开文件句柄的数量
explicit_defaults_for_timestamp
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
federated #支持sql语法和数据校验等.sql_mode三种模式
#ANSI模式、宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或者截断保存,报“warning”警告
#TRADITIONAL模式、严格模式,当向mysql数据插入数据时、进行数据的严格校验,保证数据不能插入,报error错误,用于事物时,会进行事物回滚
#STRICT_TRANS_TABLES模式。严格模式,进行数据的严格校验,错误数据不能插入,报error错误
default_authentication_plugin = mysql_native_password #MySQL 8默认使用新的密码验证插件:caching_sha2_password,早期的PHP版本中所带的mysqlnd无法支持这种验证
server_id = 706 #主从复制唯一的服务辨识号,数值位于 1 到
#replicate-do-db = posp #定义唯一复制的库
#replicate-ignore-db = mysql #定义唯一复制的库
#log-slave-updates = 1 #该选项只再主从复制,从服务器上打开复制主的信息
event_scheduler=1 #打开时间调度器
max_connections = 2000 #最大并发连接数 ,增大该值需要相应增加允许打开的文件描述符数
max_connect_errors = 10000 #如果某个用户发起的连接error超过该数值,则该用户的下次连接将被阻塞
interactive_timeout = 600 #服务器关闭交互连接前等待活动的秒数
wait_timeout = 600 #服务器关闭非交互连接之前等待活动的秒数
skip-name-resolve #garnt时,必须使用ip,不能使用主机名,禁用DNS解析
sync_binlog = 0 #可以保证事务的安全。缺省为0
log_bin_trust_function_creators = 1 #打开mysql可自定义函数
character-set-server = utf8 #设定字符集
default_storage_engine = InnoDB #定义默认引擎
#log
log-bin = /data/logs/mysql/binlog/mysql-bin #指定binlog二进制日志的文件名称
binlog_cache_size = 32m #binlog的缓存大小
max_binlog_cache_size = 10g #设定最大的binlog缓存
binlog_stmt_cache_size = 32m #设定最小的binlo缓存
table_open_cache = 2048 #表描述符缓存大小,可减少文件打开/关闭次数
max_binlog_size = 1024m #设置binlog日志文件最大为1G
binlog_format = mixed #binlog日志格式.
log_output = FILE #确认输出到日志文件
log-error = /data/logs/mysql/log/mysql-error.log #mysql系统错误日志输出
slow_query_log = 1 #打开慢日志记录
slow_query_log_file = /data/logs/mysql/log/mysql-slow_query.log #定义慢日志输出的路径
general_log = 0 #定义普通日志
general_log_file = /data/logs/mysql/log/mysql-general-query.log #定义普通日志输出的路径
expire-logs-days = 30 #日志保留的时间为30天
relay-log = /data/logs/mysql/binlog/relay-bin #定义reloa_log复制的地址
relay-log-index= /data/logs/mysql/binlog/relay-bin.index #定义reloa_log索引
#buffer
sort_buffer_size = 2m #MyISAM表发生变化时重新排序所需的缓冲。一般64M足矣
read_buffer_size = 2m #用来做MyISAM表全表扫描的缓冲大小.
read_rnd_buffer_size = 2m #当在排序之后,从一个已经排序好的序列中读取行时,行数据将从这个缓冲中读取来防止磁盘寻道
join_buffer_size = 2m #InnoDB用来缓存数据和
net_buffer_length = 16k #执行mysqldump时,net buffer length的最大上限是16Mb,默认值是1Mb
max_allowed_packet = 512m #每个连接独立的大小.大小动态增加
bulk_insert_buffer_size = 32m #当突发插入被检测到时此缓冲将被分配用于myisam
max_heap_table_size = 512m #内存表的大小
tmp_table_size = 512m #内部(内存中)临时表的最大大小
thread_cache_size = 100 #缓存可重用的线程数,可以适当的调整
#query_cache_size = 256m #指定MySQL查询结果缓冲区的大小。调优可以适当调整(已过时)
#query_cache_limit = 10m #缓存单条SQL的结果集上限,默认4KB。调优可以适当调整(已过时)
#query_cache_min_res_unit = 4k
key_buffer_size = 16m #关键词缓冲的大小, 一般用来缓冲MyISAM表的索引块
myisam_sort_buffer_size = 64m #这在每个线程中被分配.所以在设置大值时需要小心
myisam_max_sort_file_size = 10g #MySQL重建索引时所允许的最大临时文件的大小如果文件大小比此值更大,索引会通过键值缓冲创建(更慢)
myisam_repair_threads = 1 #如果一个表拥有超过一个索引,MyISAM
#innodb
innodb_file_per_table = 1 #可以修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间
innodb_data_file_path = ibdata1:2048M:autoextend #如果你只有单个逻辑驱动保存你的数据,一个单个的自增文件就足够好
innodb_log_file_size = 128m #在日志组中每个日志文件的大小
innodb_log_files_in_group = 3 #在日志组中的文件总数。通常来说2~3是比较好的
innodb_buffer_pool_size = 1g #innodb缓存池大小
innodb_buffer_pool_instances = -1
innodb_max_dirty_pages_pct = 70 #在InnoDB缓冲池中最大允许的脏页面的比例,60-90都可以
#innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_log_buffer_size = 16m #用来缓冲日志数据的缓冲区的大小。当此值快满时,InnoDB将必须刷新数据到磁盘上
innodb_flush_log_at_trx_commit = 2
#0代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘
#2代表日志写入日志文件在每次提交后,但是日志文件只有大约每秒才会刷新到磁盘上
[mysqld_safe]
log-error=/data/logs/mysql/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
[mysql]
no-auto-rehash #可以在命令可以使用tab键补齐
prompt = (\u@\h) [\d]\_ #在Mysql命令显示主机名字
default-character-set = utf8 #设定字符集合
[client]
socket=/tmp/mysql.sock
设置环境变量
# vim /etc/profile
MYSQL=/usr/local/mysql/bin
PATH=$PATH:$MYSQL
export PATH
# source /etc/profile //使配置生效
# mysql -V
mysql Ver 8.0.17 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)
初始化
/usr/local/mysql/scprit/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldb
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldb
查看root密码:
# grep "password" vim /data/logs/mysql/log/mysql-error.log
grep: vim: No such file or directory
/data/logs/mysql/log/mysql-error.log:2019-07-31T12:48:22.524067Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: sQYxsCRCk6>F
启动服务
/etc/init.d/mysqld start
测试MySQL连接
# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.17
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
(root@localhost) [(none)] show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
(root@localhost) [(none)] alter user 'root'@'localhost' IDENTIFIED BY 'appblog@2019'; //alter user 'root'@'%' IDENTIFIED BY 'appblog@2019';
Query OK, 0 rows affected (0.01 sec)
(root@localhost) [(none)] flush privileges;
Query OK, 0 rows affected (0.00 sec)
(root@localhost) [(none)] show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.17 sec)
(root@localhost) [(none)]
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/24/install-mysql-8-in-binary-mode-under-centos/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论