1.环境安装及安装包的获取及解压
#1检查卸载当前mysql相关的卸载掉
#清理
#1 /etc/profile 文件中的mysql变量删除
#2.停止当前环境中的msyql服务
#2.安装依赖环境
yum install ncurses-devel libaio-devel gcc make cmake wget gcc-c++ git openssl-devel autoconf libaio* tree -y
#3.创建存放安装包的目录,下载获取二进制代码包
mkdir -p /home/fuyonghai/tools && cd /home/fuyonghai/tools
wget https://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.49-linux-glibc2.12-x86_64.tar.gz
#4.检查是否正确安装
[root@mysql-master ~]# rpm -qa ncurses-devel libaio-devel
libaio-devel-0.3.109-13.el7.x86_64
ncurses-devel-5.9-14.201530511.el7_4.x86_64
#5.创建mysql用户,避免使用root用户权限过大造成系统潜在隐患
[root@mysql-master ~]# useradd -s /sbin/nologin -M mysql
[root@mysql-master ~]# id mysql
uid=1000(mysql) gid=1000(mysql) groups=1000(mysql)
[root@mysql-master ~]#
#6.准备好多实例的数据目录
mkdir -p /mysql/3306
[root@mysql-master mysql]# tree /mysql
/mysql
├── 3306
# 7.解压缩安装包,-C 指定目录解压缩
mkdir /application/
tar -zxvf mysql-5.6.49-linux-glibc2.12-x86_64.tar.gz -C /application/
#8.查看mysql的安装包信息
[root@mysql-master tools]# cd /application/
[root@mysql-master application]# ls -lth
total 0
drwxr-xr-x. 13 root root 191 Jul 18 18:02 mysql-5.6.49-linux-glibc2.12-x86_64
2.准备二进制mysql运行所需环境
#3306配置文件
vim /mysql/3306/my.cnf
[client]
[mysqld]
port=3306
socket=/mysql/3306/mysql.sock
basedir=/application/mysql-5.6.49-linux-glibc2.12-x86_64/
datadir=/mysql/3306/data
log-bin=/mysql/3306/mysql-bin
server-id=1
[mysqld_safe]
log-error=/mysql/3306/mysq1_3306_error.log
pid-file=/mysql/3306/mysqld_3306.pid
准备启停脚本
vim /mysql/3306/mysqld_3306
port=3306
mysql_user="mysql"
Cmdpath="/application/mysql-5.6.49-linux-glibc2.12-x86_64/bin/"
mysql_sock="/mysql/$port/mysql.sock"
mysqld_pid_file_path=/mysql/${port}/mysqld_${port}.pid
start(){
if [ ! -e "$mysql_sock" ];then
printf "starting MySQL...\n"
/bin/sh ${Cmdpath}/mysqld_safe --defaults-file=/mysql/${port}/my.cnf --pid-file=$mysqld_pid_file_path 2>&1 > /dev/null &
sleep 3
else
printf "MySQL is running...\n"
exit 1
fi
}
stop(){
if [ ! -e "$mysql_sock" ];then
printf "MySQL is stopped...\n"
exit 1
else
printf "stoping MySQL...\n"
mysqld_pid=`cat "$mysqld_pid_file_path"`
if (kill -0 $mysqld_pid 2>/dev/null)
then
kill $mysqld_pid
sleep 2
fi
fi
}
restart(){
printf "Rstarting MySQL...\n"
stop
sleep 2
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
printf "Usage: /data/${port}/mysql{start|stop|restart}\n"
esac
赋予可执行权限
chmod +x /mysql/3306/mysqld_3306
降低权限 将mysql目录全部赋予msyql
chown -R mysql.mysql /mysql/
配置环境变量
[root@master bin]# vim /etc/profile
#末尾添加
export PATH=/application/mysql-5.6.49-linux-glibc2.12-x86_64/bin/:$PATH
#加载生效
[root@master bin]# source /etc/profile
#检查是否生效
[root@master ~]# echo $PATH
/application/mysql-5.6.49-linux-glibc2.12-x86_64/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
创建实例对应的目录
在这里插入代码片
3.mysql实例初始化
mkdir -p /mysql/3306/data
tree /mysql
[root@master 3307]# tree /mysql
/mysql
├── 3306
#此时3306data文件夹是空的,执行初始化后将生成一系列初始数据
[root@mysql-master scripts]# ls /mysql/3306/data/
[root@mysql-master scripts]#
#执行初始化命令后出现两个ok无报错则正常初始化
[root@mysql-master scripts]# /application/mysql-5.6.49-linux-glibc2.12-x86_64/scripts/mysql_install_db --defaults-file=/mysql/3306/my.cnf --basedir=/application/mysql-5.6.49-linux-glibc2.12-x86_64/ --datadir=/mysql/3306/data/ --user=mysql
#将在data目录下生产相关初始化文件
[root@mysql-master 3306]# ll /mysql/3306/data
total 110600
-rw-rw----. 1 mysql mysql 12582912 Jul 18 19:26 ibdata1
-rw-rw----. 1 mysql mysql 50331648 Jul 18 19:26 ib_logfile0
-rw-rw----. 1 mysql mysql 50331648 Jul 18 19:26 ib_logfile1
drwx------. 2 mysql mysql 4096 Jul 18 19:26 mysql
drwx------. 2 mysql mysql 4096 Jul 18 19:26 performance_schema
drwx------. 2 mysql mysql 6 Jul 18 19:26 test
[root@mysql-master 3306]#
4.启动mysql
#3306数据库启动
#启动时报错了
[root@master 3306]# /mysql/3306/mysqld_3306 start
starting MySQL...
230730 06:51:40 mysqld_safe error: log-error set to '/mysql/3306/mysq1_3306_error.log', however file don't exists. Create writable for user 'mysql'.
#解决报错
touch /mysql/3306/mysq1_3306_error.log
[root@master 3306]# touch /mysql/3306/mysq1_3306_error.log
[root@master 3306]# chown -R mysql.mysql /mysql/3306/mysq1_3306_error.log
[root@master 3306]# /mysql/3306/mysqld_3306 start
starting MySQL...
[root@master 3306]# netstat -ntlp |grep mysql
tcp6 0 0 :::3306 :::* LISTEN 16242/mysqld
[root@master 3306]#
5.登录mysql
首次登录不需要密码
#登录3306
#指定地址和端口登录
[root@master 3306]# mysql -uroot -p -h 127.0.0.1 -P 3306
#登录3307
#指定地址和端口登录
[root@master 3306]# mysql -uroot -p -h 127.0.0.1 -P 3307
#使用套接字登录(走内存共享)
[root@master 3306]# mysql -S /mysql/3306/mysq1.sock
[root@master 3306]# mysql -S /mysql/3307/mysq1.sock
6.设置开机自启动
找到自启目录,将要启动的脚本和路径往里添加即可
(1)首先得保证脚本启动没问题
##保证启动命令在服务器中任何目录下都可以执行启动
/mysql/3306/mysqld_3306 start
(2)编写脚本,将启动命令放到启动脚本中,注意 “# chkconfig: 2345 80 90” 必须有,表示级别,不加将导致开机自启无法添加
vim mysql_start.sh
#!/bin/bash
# **********************************************************
# * Author : Yonghai
# * Email : Yonghai@163.com
# * Create time : 2023-07-30 09:12
# * Filename : mysql_start.sh
# * Description :
# **********************************************************
# chkconfig: 2345 80 90
/mysql/3306/mysqld_3306 start
/mysql/3307/mysqld_3307 start
(3)将其放到、etc/init.d/目录下,并使用chkconfig命令将其设置为开机自启动(注意文件添加可执行权限):
[root@master init.d]# ls
mysql_start.sh
[root@master init.d]# chmod +x mysql_start.sh
[root@master init.d]#
# chkconfig --add mysql_start.sh
# chkconfig mysql_start.sh on
#reboot重启验证
reboot
7.修改数据库root用户密码
(1)使用套接字登录修改密码
mysqladmin -uroot -S /mysql/3306/mysql.sock password
[root@master ~]# mysqladmin -uroot -S /mysql/3306/mysql.sock password
New password:
Confirm new password:
#密码登录 必须输密码才能登录,加 -p 参数
[root@master ~]# mysql -p -S /mysql/3306/mysql.sock
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.49-log 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> \q
8.远程登录数据库(使用navicat)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'xlgw123456!' WITH GRANT OPTION;
#允许用户在192.168.10.0/24这个网段内连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.10.%'IDENTIFIED BY 'xlgw123456!' WITH GRANT OPTION;
#这样也可
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.10.%'IDENTIFIED BY 'xlgw123456!'