第一步下载软件
下载地址:https://dev.mysql.com/downloads/mysql/
比较常使用系统的是Windows、Linux 、Red Hat Enterprise Linux、Ubuntu Linux;
我们使用的是 mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz进行操作。
下载安装包
将下载好的安装包,上传到服务器端。
第二步解压安装包
因为压缩包使用的是xz,所以服务器端需要安装xz
首先来说下:xz
xz是一个使用LZMA压缩算法的无损数据压缩文件格式。 和gzip与bzip2差不多,支持多文件压缩,限制于不能将多个的目标文件压缩到同一个压缩包中。 所以对于xz通常作为一种归档文件对于自身压缩。 xz在GNU coreutils(版本7.1或更新) 中被使用。
安装
如果系统没有xz命令,需要进行安装,安装方法非常简单, 在centos下,直接运行:
[root@mysql]# yum install xz
接下来就使用:
[root@mysql]# tar -xvf mysql-8.0.22-linux-glibc2.12-x86_64.tar
在进行修改名称使用:mv命令
[root@mysql]# mv mysql-8.0.22-linux mysql8
第三步:创建目录
mysql数据目录:/home/mysql8/data
日志目录:/home/mysql8/log
basedir:/home/mysql8
socket = /home/mysql8/mysql.sock
tmpdir = /home/mysql8/tmp
创建数据库日志文件:touch /home/mysql8/log/mysqld.log
第四步:创建mysql用户组和mysql用户
[root@mysql]#groupadd mysql
[root@mysql]#seradd -g mysql mysql
第五步:改变mysql目录权限
[root@mysql]#chown -R mysql:mysql /home/mysql8
第六步:初始化数据库
[root@mysql]#cd /home/mysql8
[root@mysql]#./bin/mysqld --initialize --user=mysql --basedir=/home/mysql8 --datadir=/home/mysql8/data
执行之后,保存好临时密码。
第七步:配置mysql参数文件
在拷贝/etc/my.cnf文件到,/home/mysql8/support-files目录下y.cnf
编辑my.cnf配置参数文件:
[client]
port=3306
socket=/home/mysql8/mysql.sock
[mysqld]
basedir=/home/mysql8
datadir=/home/mysql8/data
socket=/home/mysql8/mysql.sock
max_connections=1000
group_concat_max_len=102400000
skip-name-resolve
slow-query_log=ON
slow_query_log_file=/home/mysql8/mysql-slow.log
long_query_time=2
innodb_file_per_table = 1
[log]
log_bin=/home/mysql8/mysql-bin
binlog_format=ROW
expire_logs_days=5
[mysqld_safe]
log-error=/home/mysql8/log/mysqld.log
pid-file=/home/mysql8/mysqld.pid
[mysql]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
编辑好之后,拷贝到/etc/my.cnf覆盖。
[root@mysql support-files]# cp my.cnf /etc/
cp: overwrite ?.etc/my.cnf?. yes
第八步:mysql配置环境变量
编辑 /etc/profile 文件
[root@mysql support-files]# vim /etc/profile
添加以下信息:
#mysql
export MYSQL_HOME=/home/mysql8
export PATH=$PATH:$MYSQL_HOME/bin
[root@mysql support-files]# source /etc/profile
[root@mysql support-files]# echo $MYSQL_HOME
/home/mysql8
第九步:创建软连接
# ln -s /home/mysql8/bin/mysql /usr/bin/mysql
# ln -s /home/mysql8/bin/mysqladmin /usr/bin/
第十步:启动myslq服务
[root@ mysql]# cd /home/mysql8/support-files
[root@ mysql]#./mysql.server start
[root@mysql support-files]# ./mysql.server start
Starting MySQL....... SUCCESS!
[root@mysql support-files]#
第十一步:设置mysql为自启动
拷贝启动文件到/etc/init.d/下并重命令为mysqld,增加执行权限
# cp /home/mysql8/support-files/mysql.server /etc/init.d/mysqld
# chmod 755 /etc/init.d/mysqld
添加自启动
# chkconfig --list mysqld
# chkconfig --add mysqld
# chkconfig mysqld on
[root@mysql support-files]# chkconfig --list mysqld
Note: This output shows SysV services only and does not include native
systemd services. SysV configuration data might be overridden by native
systemd configuration.
If you want to list systemd services use 'systemctl list-unit-files'.
To see services enabled on particular target use
'systemctl list-dependencies [target]'.
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@mysql support-files]#
第十二步:初始化root用户密码
此时使用记录下来的初始密码进行初始化,并输入初始密码B*u0hTkfe*f#,设置新密码为root
./mysql -uroot -p
mysql> SET PASSWORD FOR root@localhost = 'rootroot';
Query OK, 0 rows affected (0.00 sec)
mysql>
退出去重新使用新密码登录:
[root@mysql bin]# mysql -uroot -prootroot
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.22 MySQL Community Server - GPL
Copyright (c) 2000, 2020, 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.
mysql>
注意:mysql -uroot -prootroot 使用明文密码它会报一个警告信息。
[警告]在命令行界面上使用密码可能不安全。
使用密文:
[root@mysql bin]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.22 MySQL Community Server - GPL
Copyright (c) 2000, 2020, 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.
mysql>
以下说明下参数:
[client]
port = 3306
socket = /home/mysql8/mysql.sock
[mysqld]
# Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id = 1
# 服务端口号 默认3306
port = 3306
# mysql安装根目录
basedir = /home/mysql8
# mysql数据文件所在位置
datadir = /home/mysql8/data
# pid
pid-file = /home/mysql8/mysql.pid
# 设置socke文件所在目录
socket = /home/mysql8/mysql.sock
# 设置临时目录
tmpdir = /home/mysql8/tmp
# 用户
user = mysql
# 允许访问的IP网段
bind-address = 0.0.0.0
# 跳过密码登录
#skip-grant-tables
# 主要用于MyISAM存储引擎,如果多台服务器连接一个数据库则建议注释下面内容
skip-external-locking
# 只能用IP地址检查客户端的登录,不用主机名
skip_name_resolve = 1
# 事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation = READ-COMMITTED
# 数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4
# 数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
# 设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
# 是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
# 最大连接数
max_connections = 400
# 最大错误连接数
max_connect_errors = 1000
# TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp = true
# SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet = 128M
# MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
# MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800
wait_timeout = 1800
# 内部内存临时表的最大值 ,设置成128M。
# 比如大数据量的group by ,order by时可能用到临时表,
# 超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size = 134217728
max_heap_table_size = 134217728
# 禁用mysql的缓存查询结果集功能
# 后期根据业务情况测试决定是否开启
# 大部分情况下关闭下面两项
query_cache_size = 0
query_cache_type = 0
# 数据库错误日志文件
log_error = error.log
# 慢查询sql日志设置
slow_query_log = 1
slow_query_log_file = slow.log
# 检查未使用到索引的sql
log_queries_not_using_indexes = 1
# 针对log_queries_not_using_indexes开启后,记录慢sql的频次、每分钟记录的条数
log_throttle_queries_not_using_indexes = 5
# 作为从库时生效,从库复制中如何有慢sql也将被记录
log_slow_slave_statements = 1
# 慢查询执行的秒数,必须达到此值可被记录
long_query_time = 8
# 检索的行数必须达到此值才可被记为慢查询
min_examined_row_limit = 100
# mysql binlog日志文件保存的过期时间,过期后自动删除
expire_logs_days = 5
# ln -s /mysql/bin/mysql /usr/bin/mysql
# ln -s /mysql/bin/mysql /usr/bin/
# ln -s /mysql/bin/mysqladmin /usr/bin/
拷贝启动文件到/etc/init.d/下并重命令为mysqld,增加执行权限