MySQL 二进制版本安装
一、情况说明
- 安装版本:<font color=#008000 >MySQL 5.7.26</font>
- 操作系统:<font color=#008000 >CentOS 7.6</font>
二、mysql的部署
01. 下载并上传软件
[root@mysql ~]# mkdir -p /server/scripts
[root@mysql ~]# cd /server/scripts/
[root@mysql /server/scripts]# tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
02. 解压
[root@mysql /server/scripts]# mkdir /application
[root@mysql /server/scripts]# mv mysql-5.7.26-linux-glibc2.12-x86_64 /application/mysql
03. 处理原始环境
[root@mysql /server/scripts]# rpm -qa |grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
[root@mysql /server/scripts]# yum remove mariadb-libs.x86_64 -y
## 卸载此软件或删除/etc/my.cnf 否则会报错
04. 创建用户
[root@mysql ~]# useradd -s /sbin/nologin mysql
[root@mysql ~]# id mysql
uid=1001(mysql) gid=1001(mysql) groups=1001(mysql)
05. 设置环境变量(添加到尾部)
[root@mysql ~]# vim /etc/profile
export PATH=/application/mysql/bin:$PATH
[root@mysql ~]# source /etc/profile
[root@mysql ~]# mysql -V ==> 检查是否生效
mysql Ver 14.14 Distrib 5.7.26, for linux-glibc2.12 (x86_64) using EditLine wrapper
06. 添加一块新磁盘,模拟生产环境下的数据盘
07. 格式化并挂载磁盘
[root@mysql ~]# mkfs.xfs /dev/sdb
[root@mysql ~]# mkdir /data ##存放所有数据库数据
[root@mysql ~]# blkid ##查看磁盘的UUID
[root@mysql ~]# vim /etc/fstab ##写入开机自启动
UUID=aa617745-ecac-4a77-a679-919a52851af0 /data xfs defaults 0 0
[root@mysql ~]# mount -a ##挂载
[root@mysql ~]# df -h ##查看是否挂载成功
08. 授权
[root@mysql ~]# mkdir /data/mysql/data -p
[root@mysql ~]# chown -R mysql:mysql /data/
[root@mysql ~]# chown -R mysql.mysql /application/*
09. 初始化数据(创建系统数据)
[root@mysql ~]# mkdir /data/mysql/data -p
[root@mysql ~]# chown -R mysql:mysql /data/
[root@mysql ~]# yum install -y libaio-devel
[root@mysql ~]# mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
10. 编写配置文件
[root@mysql ~]# cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF
11. 配置systemd管理
[root@mysql ~]# cat >/etc/systemd/system/mysqld.service<<EOF
[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
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF
12. 启动数据库
[root@mysql ~]# systemctl start mysqld
[root@mysql ~]# netstat -lntup |grep 3306 #查看是否启动成功
13. 管理员密码设置(root@localhost)
[root@db01 ~]# mysqladmin -uroot -p password wuyonghui123
Enter password: #==> 无密码,直接回车
三、MySQL安装报错
错误1:
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
报错原因:缺少libao-devel包
解决方法:yum install -y libaio-devel
错误2:
[root@mysql /data/mysql/data]# mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
2019-07-25T13:17:21.338642Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-07-25T13:17:21.341533Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2019-07-25T13:17:21.341574Z 0 [ERROR] Aborting
报错原因:/data/mysql/data下目录下有文件(mysql的保护措施)
解决办法:清空/data/mysql/data !!!只在全新环境情况,
错误3:
[root@mysql /application/mysql/support-files]# ./mysql.server start
Starting MySQL.sed: -e expression #1, char 19: unknown option to `s'
Logging to '/data/mysql/data/mysql.err'.
.... ERROR! The server quit without updating PID file (/data/mysql/data/mysql.pid).
解决方法:查看错误日志/data/mysql/data/mysql.err
/etc/my.cnf配置文件编写错误(参数改错了)
如何分析处理MySQL数据库无法启动
<font color=#008000>without updating PID 类似错误</font>
<font color=#008000> 查看日志:data/mysql/data/主机名.err 找[ERROR] 中括号是ERROR的 </font>
可能原因:
- /etc/my.cnf 路径不对等
- /tmp/mysql.sock 文件修改过 或 删除过
- 数据目录权限不是mysql
- 参数改错了
四、MySQL补充
查看mysql是否启动的方法
[root@mysql ~]# netstat -lntup |grep 3306
[root@mysql ~]# ps -ef|grep mysqld
[root@mysql ~]# systemctl status mysqld
[root@mysql ~]# lsof -i :3306 #需要下载lsof包
[root@mysql ~]# mysql #直接进入
初始化数据(5.6版本)
#MySQL的安装路径
[root@mysql ~]# /application/mysql/scripts/mysql_install_db
初始化数据(5.7版本)
#官方推荐方法(生成一个临时的随机密码)
[root@mysql ~]# mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
--initialize
5.7版本以后,加强了用户密码安全管理的功能
1.对与密码负载度进行定制:12位,4种
2.密码过期时间:180
3.给root@localhost用户设置临时密码
#生产常用方法(空密码)
[root@mysql ~]# mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
--initialize-insecure
启用非安全模式,进行数据初始化
添加一块新磁盘,不重启就可以发现的办法
[root@mysql ~]# cd /sys/class/scsi_host/
[root@mysql /sys/class/scsi_host]# echo "- - -" > host0/scan ##接口扫描新加磁盘
[root@mysql /sys/class/scsi_host]# fdisk -l ##发现新加磁盘
忘记MySQL密码的解决方法
01、关闭mysql
[root@db01 ~]# systemctl stop mysqld.service
02、启动数据库到维护模式
[root@db01 ~]# mysqld_safe --skip-grant-tables --skip-networking &
03、登录并修改密码
[root@db01 ~]# mysql
mysql> flush privilegers;
mysql> alter user root@'localhost' identified by '123';
04、关闭数据库,正常启动验证
[root@db01 ~]# pkill mysqld
[root@db01 ~]# systemctl start mysqld.service
[root@db01 ~]# mysql -uroot -p123 #修改成功
启动数据库的方法
1.sys-v (CentOS 6 7)
[root@mysql ~]# cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@mysql ~]# service mysqld status
2.systemd管理(CentOS 7)
[root@mysql ~]# cat /etc/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
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000