指定位置安装
步骤:
1、在根目录下创建文件夹/data/mysql
mkdir /data/package -p
2、上传mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz文件到/data/package下
cd /data/
tar -zxvf /data/package/mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz -C /data/
# 或
tar -xvf /data/package/mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz -C /data/
3、更改解压缩后的文件夹名称
mv mysql-8.0.19-linux-glibc2.12-x86_64 mysql
4、创建mysql用户组和mysql用户
groupadd mysql
useradd -r -g mysql mysql
5、创建conf、log、tmp文件夹和error.log文件
mkdir /data/mysql/conf /data/mysql/log /data/mysql/tmp -p
vim /data/mysql/log/error.log
# 打开后
:wq 保存退出
6、安装libaio依赖包,系统自带的有这个依赖包所以不需要安装,不过自带的依赖包会报错(可跳过)
查询是否暗转libaio依赖包
#yum search libaionn
如果没安装,可以用下面命令安装
#yum install libaio
7、初始化mysql命令
cd /data/mysql/bin
./mysqld --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data --initialize --console
在执行上面命令时特别要注意一行内容
[Note] A temporary password is generated for root@localhost: o*s#gqh)F4Ck
root@localhost: 后面跟的是mysql数据库登录的临时密码,各人安装生成的临时密码不一样
如果初始化时报错如下:
error while loading shared libraries: libnuma.so.1: cannot open shared objec
是因为libnuma安装的是32位,我们这里需要64位的,执行下面语句就可以解决
yum install numactl.x86_64
执行完后重新初始化mysql命令
8、关联myql用户到mysql用户组中
chown -R mysql:mysql /data/mysql/
chown -R mysql /data/mysql
9、修改Mysql配置文件
vim /data/mysql/bin/mysqld_safe
可使用命令替换
# :%s/匹配字符/替换字符/
:%s/\/usr\/local\/mysql/\/data\/mysql/
修改前
if test -z "$basedir"
then
basedir=/usr/local/mysql
bindir=/usr/local/mysql/bin
if test -z "$datadir"
then
datadir=/usr/local/mysql/data
fi
sbindir=/usr/local/mysql/bin
libexecdir=/usr/local/mysql/bin
else
bindir="$basedir/bin"
if test -z "$datadir"
then
datadir="$basedir/data"
fi
sbindir="$basedir/sbin"
libexecdir="$basedir/libexec"
fi
修改后
if test -z "$basedir"
then
basedir=/data/mysql
bindir=/data/mysql/bin
if test -z "$datadir"
then
datadir=/data/mysql
fi
sbindir=/data/mysql/bin
libexecdir=/data/mysql/bin
else
bindir="$basedir/bin"
if test -z "$datadir"
then
datadir="$basedir/data"
fi
sbindir="$basedir/sbin"
libexecdir="$basedir/libexec"
fi
10、修改my.cnf文件 配置文件存放在%mysql%/conf中(也可随意放置,只需在后续启动服务器时指定配置文件即可)
# 把下方配置修改成自己服务器上的路径即可,使用下方命令
:%s/\/data\/mysql-8.0.18/\/data\/mysql/
[client]
port = 3306
socket = /data/mysql-8.0.18/tmp/mysql.sock
[mysqld]
#mysql数据文件所在位置
datadir = /data/mysql-8.0.18/data
#pid
pid-file = /data/mysql-8.0.18/mysql.pid
#设置socke文件所在目录
socket = /data/mysql-8.0.18/tmp/mysql.sock
#设置临时目录
tmpdir = /data/mysql-8.0.18/tmp
# 日志相关
slow_query_log = ON
log_error = "/data/mysql-8.0.18/log/error.log"
slow_query_log_file = "/data/mysql-8.0.18/log/blg-slow.log"
long_query_time = 2
log_queries_not_using_indexes = 1
log_throttle_queries_not_using_indexes = 10
# expire_logs_days = 90
min_examined_row_limit = 100
log_output = TABLE,FILE
general_log = 1
# binlog设置
master_info_repository = TABLE
relay_log_info_repository = TABLE
log_bin = bin.log
server-id = 1
# innodb 设置
default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_open_files = 500
innodb_buffer_pool_size = 1024M
innodb_write_io_threads = 10
innodb_read_io_threads = 10
innodb_thread_concurrency = 0
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 16M
innodb_log_file_size = 64M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_lru_scan_depth = 2000
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
# 默认参数设置
secure-file-priv = NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
# symbolic-links =0
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
default_authentication_plugin = mysql_native_password
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# sql_mode='NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES'
# # Custom config should go here
# !includedir /etc/mysql/conf.d/
#----------------优化配置(说明从上到下)
# 支持符号链接,就是可以通过软连接的方式,管理其他目录的数据库,最好不要开启,当一个磁盘或分区空间不够时,可以开启该参数将数据存储到其他的磁盘或分区
symbolic-links=0
# 设置autocommit=0,则用户将一直处于某个事务中,直到执行一条commit提交或rollback语句才会结束当前事务重新开始一个新的事务(调试模式时使用)
#autocommit=0
# MySQL读入缓冲区的大小
read_buffer_size = 512M
# MySQL的随机读缓冲区大小、MySQL的顺序读缓冲区大小
read_rnd_buffer_size = 256M
sort_buffer_size = 256M
# 连接超时时间、保持时间、最大传输数据包大小
wait_timeout = 2880000
interactive_timeout = 2880000
max_allowed_packet = 512M
# 连接缓存池大小、临时表大小、临时存放位置
join_buffer_size = 512M
tmp_table_size = 128M
tmpdir = /data/mysql-8.0.18/tmp
11、启动mysql
#具体配置需要修改成服务器上对应的路径
# --defaults-file
# --basedir
# --datadir
/data/mysql/bin/mysqld_safe --defaults-file=/data/mysql/conf/my.cnf --basedir=/data/mysql/ --datadir=/data/mysql/data
12、登录mysql
/data/mysql/bin/mysql --defaults-file=/data/mysql/conf/my.cnf -uroot -p
13、输入临时密码。临时密码就是第7条root@localhost:后面的内容
14、修改mysql的登录密码
alter user 'root'@'localhost' identified with mysql_native_password by '123456';
flush privileges;
my.cnf配置的几个参数:
skip-name-resolve 跳过DNS反向解析过程.(这样就不能使用主机名连接mysql了,只能使用ip连接)
skip-grant-tables 跳过授权表(当mysql登陆密码忘记时的解决办法)
skip-networking 跳过TCP/IP连接
skip-host-cache 禁用主机名缓存;要想清除主机名缓存,执行FLUSH HOSTS语句或执行mysqladmin flush-hosts命令