作者:IT邦德
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
(Web\java\Python)工作,主要服务于生产制造
现拥有 Oracle 11g OCP/OCM、
Mysql、Oceanbase(OBCA)认证
分布式TBase\TDSQL数据库、国产达梦数据库以及红帽子认证
从业8年DBA工作,在数据库领域有丰富的经验
B站主播Oracle、Mysql、PG实战课程,请搜索:jeames007
擅长Oracle数据库运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
文章目录
前言
最近一个朋友开的公司需要安装部署Mysql,故帮忙在Liunx服务器安装部署了下,为了感谢我,朋友还请我吃了一顿海底捞,特总结以下部署文档分享给大家一、环境准备
1.1 操作系统版本
[root@rhel76 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.6 (Maipo)
1.2 磁盘空间
[root@rhel76 ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/rhel-root xfs 32G 4.6G 27G 15% /
devtmpfs devtmpfs 2.1G 0 2.1G 0% /dev
tmpfs tmpfs 2.1G 0 2.1G 0% /dev/shm
tmpfs tmpfs 2.1G 14M 2.1G 1% /run
tmpfs tmpfs 2.1G 0 2.1G 0% /sys/fs/cgroup
/dev/sda1 xfs 996M 172M 825M 18% /boot
/dev/mapper/rhel-u01 xfs 30G 34M 30G 1% /u01
tmpfs tmpfs 413M 4.1k 413M 1% /run/user/42
tmpfs tmpfs 413M 46k 413M 1% /run/user/0
1.3 关闭防火墙
[root@rhel76 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-11-23 23:46:04 UTC; 9min ago
Docs: man:firewalld(1)
Main PID: 9621 (firewalld)
Tasks: 2
CGroup: /system.slice/firewalld.service
└─9621 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Nov 23 23:46:03 rhel76 systemd[1]: Starting firewalld - dynamic firewall daemon...
Nov 23 23:46:04 rhel76 systemd[1]: Started firewalld - dynamic firewall daemon.
[root@rhel76 ~]# systemctl stop firewalld
[root@rhel76 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
1.4 关闭 selinux
[root@rhel76 ~]# getenforce
Enforcing
[root@rhel76 ~]# cp /etc/selinux/config /etc/selinux/config_`date +"%Y%m%d_%H%M%S"`
[root@rhel76 ~]# sed -i 's/SELINUX\=enforcing/SELINUX\=disabled/g' /etc/selinux/config
以上修改完后重启
[root@rhel76 ~]# reboot
[root@rhel76 ~]# getenforce
Disabled
[root@rhel76 ~]# sestatus
SELinux status: disabled
1.5 HOST解析
[root@rhel76 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.6.81 rhel76
[root@rhel76 ~]# hostname
rhel76
1.6 Mysql下载
https://dev.mysql.com/downloads/mysql/
MD5: 0bdd171cb8464ba32f65f7bf58bc9533
二、 yum安装及配置
2.1 挂载本地光盘镜像
[root@rhel76 ~]# mkdir -p /mnt/dvd/
[root@rhel76 ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/rhel-root xfs 32G 4.7G 27G 15% /
devtmpfs devtmpfs 2.1G 0 2.1G 0% /dev
tmpfs tmpfs 2.1G 0 2.1G 0% /dev/shm
tmpfs tmpfs 2.1G 14M 2.1G 1% /run
tmpfs tmpfs 2.1G 0 2.1G 0% /sys/fs/cgroup
/dev/sda1 xfs 996M 172M 825M 18% /boot
/dev/mapper/rhel-u01 xfs 30G 34M 30G 1% /u01
tmpfs tmpfs 413M 21k 413M 1% /run/user/0
tmpfs tmpfs 413M 13k 413M 1% /run/user/42
/dev/sr0 iso9660 4.5G 4.5G 0 100% /run/media/root/RHEL-7.6 Server.x86_64
[root@rhel76 ~]# mount /dev/sr0 /mnt/dvd
mount: /dev/sr0 is write-protected, mounting read-only
You have mail in /var/spool/mail/root
2.2 配置yum源
[root@rhel76 ~]# cd /etc/yum.repos.d/
[root@rhel76 yum.repos.d]# cat >> /etc/yum.repos.d/redhat.repo << "EOF"
> [rhel7]
> name=jeames repo
> baseurl=file:///mnt/dvd/
> gpgcheck=0
> EOF
2.3 安装依赖包
[root@rhel76 ~]# yum -y groupinstall "DeveLopment tools"
Loaded plugins: fastestmirror, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
Warning: Group development does not have any packages to install.
Maybe run: yum groups mark install (see man yum)
No packages in any requested group available to install or update
[root@rhel76 ~]# yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make
三、卸载MariaDB
[root@rhel76 ~]# rpm -qa |grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
[root@rhel76 ~]# rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
四、安装 MySQL
4.1 用户及目录创建
注:可以部署多个实例,通过端口区分root 用户操作:
mkdir -p /mysql/data/mysql3306
mkdir -p /mysql/app/
mkdir -p /mysql/conf/
mkdir -p /mysql/data/mysql3306/pid/
mkdir -p /mysql/data/mysql3306/socket/
mkdir -p /mysql/data/mysql3306/log/
mkdir -p /mysql/data/mysql3306/binlog/
mkdir -p /mysql/data/mysql3306/errlog
mkdir -p /mysql/data/mysql3306/relaylog/
mkdir -p /mysql/data/mysql3306/slowlog/
mkdir -p /mysql/data/mysql3306/tmp/
4.2 用户及组
[root@rhel76 ~]# groupadd mysql
[root@rhel76 ~]# useradd -g mysql mysql
[root@rhel76 ~]# chown -R mysql:mysql /mysql
[root@rhel76 ~]# passwd mysql
Changing password for user mysql.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@rhel76 ~]# cat /etc/group | grep mysql
mysql:x:1001:
[root@rhel76 ~]# cat /etc/passwd | grep mysql
mysql:x:1001:1001::/home/mysql:/bin/bash
4.3 上传软件包并解压
[root@rhel76 ~]# cp mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz /mysql/app
[root@rhel76 ~]# chown -R mysql:mysql /mysql
mysql用户操作
[root@rhel76 ~]# su - mysql
md5 值验证,保证下载到的软件包无破损无木马
[mysql@rhel76 ~]$ cd /mysql/app
[mysql@rhel76 app]$ ll
total 1168588
-rw-r--r-- 1 mysql mysql 1196633756 Nov 24 00:49 mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
[mysql@rhel76 app]$ md5sum mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
0bdd171cb8464ba32f65f7bf58bc9533 mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
解压软件包并重命名
[mysql@rhel76 app]$ tar xvf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
[mysql@rhel76 app]$ mv mysql-8.0.27-linux-glibc2.12-x86_64 mysql8.0.27
[mysql@rhel76 app]$ ll
total 1168588
drwxrwxr-x 9 mysql mysql 129 Nov 24 00:54 mysql8.0.27
-rw-r--r-- 1 mysql mysql 1196633756 Nov 24 00:49 mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
五.环境变量配置
cat >> /home/mysql/.bash_profile << "EOF"
MYSQL_HOME=/mysql/app/mysql8.0.27
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$MYSQL_HOME/bin
EOF
source ~/.bash_profile
which mysql
六.创建参数文件
由于是二进制文件安装,数据库参数文件需要自己配置
cat >> /mysql/conf/my3306.cnf << "EOF"
[mysqld]
server_id = 80273306
default-storage-engine= InnoDB
basedir=/mysql/app/mysql8.0.27
datadir=/mysql/data/mysql3306/data/
socket=/mysql/data/mysql3306/socket/mysql.sock
log-error=/mysql/data/mysql3306/log/mysqld.log
pid-file=/mysql/data/mysql3306/pid/mysqld.pid
port=3306
default-time_zone='+8:00'
default_authentication_plugin=mysql_native_password # 加此参数可远程登陆
transaction_isolation=READ-COMMITTED
max_connections=1500
back_log=500
wait_timeout=1800
max_user_connections=800
innodb_buffer_pool_size=1024M
innodb_log_file_size=512M
innodb_log_buffer_size=40M
slow_query_log=ON
long_query_time=5
# log settings #
slow_query_log = ON
slow_query_log_file = /mysql/data/mysql3306/slowlog/slow3306.log
log_error = /mysql/data/mysql3306/errlog/err3306.log
log_error_verbosity = 3
log_bin = /mysql/data/mysql3306/binlog/mysql_bin
log_bin_index = /mysql/data/mysql3306/binlog/mysql_binlog.index
general_log_file = /data/mysql/mysql3306/generallog/general.log
log_queries_not_using_indexes = 1
log_slow_admin_statements = 1
expire_logs_days = 90
binlog_expire_logs_seconds = 2592000 #30d
long_query_time = 2
min_examined_row_limit = 100
log_throttle_queries_not_using_indexes = 1000
innodb_flush_log_at_trx_commit=1
EOF
七.数据库初始化
mysql用户操作:
mysqld --defaults-file=/mysql/conf/my3306.cnf --initialize --user=mysql --basedir=/mysql/app/mysql8.0.27 --datadir=/mysql/data/mysql3306/data/
注意:以上同一行执行
八.启动Mysql
[mysql@rhel76 ~]$ mysqld_safe --defaults-file=/mysql/conf/my3306.cnf --user=mysql &
[1] 21406
[mysql@rhel76 ~]$ 2021-11-24T06:14:23.240372Z mysqld_safe Logging to '/mysql/data/mysql3306/errlog/err3306.log'.
2021-11-24T06:14:23.296992Z mysqld_safe Starting mysqld daemon with databases from /mysql/data/mysql3306/data
九.登陆Mysql
第一次登录 MySQL 时,需要到错误日志下找初始化密码,我这里的密码为:-(Qy5Aj9t,=a
使用 socket 加密码登录进去后,无法查询任何东西,提示先要修改 root 密码。
[mysql@rhel76 ~]$ cat /mysql/data/mysql3306/errlog/err3306.log | grep password
2021-11-24T06:12:14.610657Z 0 [Note] [MY-010309] [Server] Auto generated RSA key files through --sha256_password_auto_generate_rsa_keys are placed in data directory.
2021-11-24T06:12:14.610686Z 0 [Note] [MY-010308] [Server] Skipping generation of RSA key pair through --caching_sha2_password_auto_generate_rsa_keys as key files are present in data directory.
2021-11-24T06:12:14.615367Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: -(Qy5Aj9t,=a
2021-11-24T06:14:26.153958Z 0 [Note] [MY-010308] [Server] Skipping generation of RSA key pair through --sha256_password_auto_generate_rsa_keys as key files are present in data directory.
2021-11-24T06:14:26.153979Z 0 [Note] [MY-010308] [Server] Skipping generation of RSA key pair through --caching_sha2_password_auto_generate_rsa_keys as key files are present in data directory.
[mysql@rhel76 ~]$ mysql -uroot -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
此处通过sock登陆
[mysql@rhel76 ~]$ mysql -uroot -p -P 3306 -S /mysql/data/mysql3306/socket/mysql.sock
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.27
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
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> status
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
十.修改密码
mysql> alter user root@'localhost' identified by 'root';
Query OK, 0 rows affected (0.01 sec)
mysql> status
--------------mysql Ver 8.0.27 for Linux on x86_64
(MySQL Community Server - GPL)
Connection id: 8Current database:
Current user:
root@localhostSSL:
Not in useCurrent pager:
stdoutUsing outfile: ''Using delimiter: ;
Server version: 8.0.27Protocol version:
10Connection: Localhost via UNIX socketServer
characterset: utf8mb4Db
characterset: utf8mb4Client characterset: utf8mb4Conn.
characterset: utf8mb4UNIX
socket: /mysql/data/mysql3306/socket/mysql.sockBinary data as: HexadecimalUptime: 8 min 0
secThreads: 2 Questions: 7
Slow queries: 0 Opens: 398 Flush tables: 3
Open tables: 36 Queries per second avg: 0.014--------------
十一.远程登陆设置
使用如下语句创建 root 用户是无法通过 navicat 等客户端登录的,
由于从 MySQL8 开始,身份验证插件发生改变,
默认的 “caching_sha2_password” 不允许远程登录,
故需将此插件修改为 “mysql_native_password” 便可登录。
mysql> create user root@'%' identified with mysql_native_password by 'root';
mysql> grant all on *.* to root@'%' with grant option;
mysql> flush privileges;
mysql> select user,host,plugin from mysql.user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| root | % | mysql_native_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)
如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持
您的批评指正是我写作的最大动力!
❤️ 技术交流可以 关注公众号:IT邦德 ❤️