MySQL安装
1、直接使用官方的yum源安装
/etc/yum.repos.d/mysql.repo
[root@localhost yum.repos.d]# cat mysql.repo
[mysql5.7-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[root@localhost yum.repos.d]# yum install mysql-server -y
2、rpm安装
下载rpm包,然后安装
1.上传文件到linux里 (xftp lrzsz—rz)
2.解压 tar xf mysql*
3.使用yum命令安装 yum install mysql-community-*
4.启动mysql服务 service mysqld start
5.查看进程和端口号 ps aux|grep mysqld lsof -i:3306 netstat -anplut
6.登录
查看临时密码 /var/log/mysql.log
修改临时密码
alter user root@localhost identified by ‘Xl@123456’;(大小写、特殊符号、数字,长度)
7.查看数据库里有哪些库
show databases;
rpm和yum安装方式的特点:安装快速,但是不能修改很多的东西,例如:路径,功能不能定制
3、编译安装
在企业使用非常多
可以指定安装路径
可以定制功能等好处
https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
https://dev.mysql.com/doc/refman/5.7/en
步骤
安装
selinux
关闭
firewalld
关闭
chkconfig mysqld on
开机启动
重启验证
reboot
init 6
一键安装和配置好MySQL
方法v1
#!/bin/bash
#提前条件是先上传MySQL的源码包文件mysql-boost-5.7.26.tar.gz
#第1步:解压源码包
tar xf mysql-boost-5.7.26.tar.gz
#第2步:安装需要的编译软件
yum install cmake ncurses-devel gcc gcc-c++ vim lsof -y
#第3步:新建mysql用户
useradd -r -s /sbin/nologin mysql
#第4步:新建数据目录
mkdir -p /data/mysql
#第5步:进入解压后的文件夹,使用cmake开始制定安装的参数
cd mysql-5.7.26
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost
#第6步:开始编译 机器的配置建议4G和4个cpu核心
make -j 4
#第7步:编译安装
make install
#第8步:备份原来的/etc/my.cnf文件,然后清空这个文件
cp /etc/my.cnf /root
>/etc/my.cnf
#第9步:进入安装好的mysql的目录,开始初始化操作,并且把临时密码保存到一个文件里,方便后面登录使用
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql &>/root/temp_password.txt
#第10步:就是拷贝mysql和mysqld的程序文件到指定的目录
cp mysql /usr/bin/
cp ../support-files/mysql.server /etc/init.d/mysqld
#第11步:关闭防火墙和selinux
service firewalld stop
systemctl disable firewalld
#临时关闭selinux
setenforce 0
#永久修改selinux配置文件里的内容
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
#第12步:设置MySQL开机启动
chkconfig mysqld on
#第13步:启动MySQL
service mysqld start
#第14步:登录进去MySQL并且重新设置密码
方法v3
#!/bin/bash
#提前条件是先上传MySQL的源码包文件mysql-boost-5.7.26.tar.gz
#让机器去ftp服务器上下载mysql-boost-5.7.26.tar.gz
#192.168.0.41是我们提供的ftp服务器的ip地址
curl -O ftp://192.168.0.41/mysql-boost-5.7.26.tar.gz
#第1步:解压源码包
tar xf mysql-boost-5.7.26.tar.gz
echo "############tarball is decompressed successfully#############"
#第2步:安装需要的编译软件
yum install cmake ncurses-devel gcc gcc-c++ vim lsof -y
echo "##############install all softwares ok##################"
#第3步:新建mysql用户
useradd -r -s /sbin/nologin mysql
echo '###### add user mysql ok######'
#第4步:新建数据目录
mkdir -p /data/mysql
echo '###### mkdir /data/mysql ok######'
#第5步:进入解压后的文件夹,使用cmake开始制定安装的参数
echo '###### start to config mysql ######'
cd mysql-5.7.26
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost
#第6步:开始编译 机器的配置建议4G和4个cpu核心
echo '###### start to make mysql ,may be need 30 minutes ,please wait a moment######'
make -j 4
#第7步:编译安装
echo '###### start to install mysql ######'
make install
#第8步:备份原来的/etc/my.cnf文件,然后清空这个文件
cp /etc/my.cnf /root
>/etc/my.cnf
#第9步:进入安装好的mysql的目录,开始初始化操作,并且把临时密码保存到一个文件里,方便后面登录使用
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql &>/root/temp_password.txt
#第10步:就是拷贝mysql和mysqld的程序文件到指定的目录
cp mysql /usr/bin/
cp ../support-files/mysql.server /etc/init.d/mysqld
#第11步:关闭防火墙和selinux
service firewalld stop
systemctl disable firewalld
#临时关闭selinux
setenforce 0
#永久修改selinux配置文件里的内容
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
#第12步:设置MySQL开机启动
chkconfig mysqld on
#第13步:启动MySQL
service mysqld start
#第14步:登录进去MySQL并且重新设置密码Sanchuang123#
#从保存的临时密码文件里,截取出临时密码,赋值给一个变量temp_pwd
temp_pwd=$(cat /root/temp_password.txt |tail -1|awk '{print $11}')
#给MySQL设置密码为Sanchuang123#
mysql -uroot -p$temp_pwd --connect-expired-password -e "set password='Sanchuang123#'"
echo '###### congratulation! your mysql has be installed successfully ######'
方法v4
#!/bin/bash
#description:一键编译安装MySQL 5.7.26
#author: xu
#time:2021-8-30
#下载mysql的5.7.26的源码包到新的机器,开始解压
[ -d /mysql ] ||mkdir /mysql
cd /mysql
curl -O ftp://192.168.0.163/download/mysql-boost-5.7.26.tar.gz
#解压源码包,进入目录
tar xf mysql-boost-5.7.26.tar.gz
cd mysql-5.7.26/
#解决依赖关系包
yum install cmake ncurses-devel gcc gcc-c++ lsof -y
#新建mysql用户
useradd -r -s /sbin/nologin mysql
#新建存放数据的目录
mkdir -p /data/mysql
#编译前的配置工作
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost
#编译
make -j 2
#编译安装
make install
#关闭防火墙firewalld
service firewalld stop
systemctl disable firewalld
#关闭selinux
#临时关闭selinux
#永久关闭selinux
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
#生成配置文件/etc/my.cnf
cat >/etc/my.cnf <<EOF
[mysqld_safe]
[client]
socket=/data/mysql/mysql.sock
[mysqld]
socket=/data/mysql/mysql.sock
port = 3309
open_files_limit = 8192
innodb_buffer_pool_size = 512M
[mysql]
auto-rehash
prompt=\\u@\\d \\R:\\m mysql>
EOF
#初始化数据库
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql &>passwd.txt
#获得临时密码
tem_passwd=$(cat passwd.txt |grep "temporary"|awk '{print $NF}')
#$NF表示最后一个字段
# abc=$(命令) 优先执行命令,然后将结果赋值给abc
#复制mysql客户端命令和启动脚本到指定目录
cp mysql /usr/bin #复制mysql客户端命令到PATH变量路径里,方便后面使用
cp ../support-files/mysql.server /etc/init.d/mysqld #复制启动脚本
#将mysql的bin目录添加到PATH变量里
echo 'PATH=$PATH:/usr/local/mysql/bin' >>/root/.bashrc
#启动mysqld服务
service mysqld start
if lsof -i:3309 &>/dev/null
then
echo "mysql is running"
else
echo “warning, mysql is not running ”
exit #退出整个脚本,不执行后面的命令
fi
#登录重新设置初始密码为1234#
#初次修改密码需要使用--connect-expired-password 选项
mysql -uroot -p$tem_passwd --connect-expired-password -e "set password='1234#';"
mysql -uroot -pSanchuang1234# -e 'show databases;' && echo "database is installed success"
mysql-5.7.29一键安装脚本
[root@mysql ~]# cat one_key_install_mysql.sh
#!/bin/bash
#author:xu
#time: 2020-8-12
####################################
#编译安装mysql 5.7.29
#os: centos7.8.2003
####################################
#假定mysql的源码包已经上传到linux服务器里的当前目录下
#安装解决软件依赖关系的包
yum install cmake ncurses-devel gcc gcc-c++ vim lsof bzip2 openssl-devel -y
#解压src的rpm包
rpm -ivh mysql-community-5.7.29-1.el7.src.rpm
#进入/root/rpmbuild目录
cd /root/rpmbuild/SOURCES
#解压真正的源码包
tar xf mysql-5.7.29.tar.gz
tar xf boost_1_59_0.tar.bz2
#将boost包移动到mysql解压的包里
mv boost_1_59_0 mysql-5.7.29
#进入解压后的目录
cd mysql-5.7.29
#编译前的配置
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/sc_mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost_1_59_0
经典的编译安装3步曲
1.编译前的配置
./configure或者是cmake
目的是生成一个叫做Makefile的文件
2.编译
make
make -j 2
启动2个进程去编译
好处就是速度快些
3.编译安装
make install
本质是将编译好的二进制程序复制到指定的安装目录
出错的图
数据目录下有文件了,删除数据目录下的所有的文件
没有安装openssl-devel软件包
磁盘空间已满,删除一些不需要的文件,释放空间
数据目录没有授予权限,/etc/init.d/mysqld没有给予可执行权限,chmod +x /etc/init.d/mysqld
检查/data/mysql这个目录的权限,mysql这个用户是否可写
修改密码
mysql> set password='12345';
mysql> alter user 'root'@'localhost' identified by '1234';
编译安装和rpm方式安装的区别
买衣服
定制
编译安装
专卖店
rpm方式安装
编译安装太慢,但是可以修改很多的东西,例如:路径,功能定制
4、二进制版本的安装
优点:可以定制功能,安装速度快
安装脚本
[root@localhost ~]# cat onekey_install_mysql_binary.sh
#!/bin/bash
#解决软件的依赖关系
yum install cmake ncurses-devel gcc gcc-c++ vim lsof bzip2 openssl-devel -y
#解压mysql二进制安装包
tar xf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz
#移动mysql解压后的文件到/usr/local下改名叫mysql
mv mysql-5.7.33-linux-glibc2.12-x86_64 /usr/local/mysql
#新建组和用户 mysql
groupadd mysql
#mysql这个用户的shell 是/bin/false 属于mysql组
useradd -r -g mysql -s /bin/false mysql
#关闭firewalld防火墙服务,并且设置开机不要启动
service firewalld stop
systemctl disable firewalld
#临时关闭selinux
setenforce 0
#永久关闭selinux
sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config
#新建存放数据的目录
mkdir /data/mysql -p
#修改/data/mysql目录的权限归mysql用户和mysql组所有,这样mysql用户可以对这个文件夹进行读写了
chown mysql:mysql /data/mysql/
#只是允许mysql这个用户和mysql组可以访问,其他人都不能访问
chmod 750 /data/mysql/
#进入/usr/local/mysql/bin目录
cd /usr/local/mysql/bin/
#初始化mysql
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql &>passwd.txt
#让mysql支持ssl方式登录的设置
./mysql_ssl_rsa_setup --datadir=/data/mysql/
#获得临时密码
tem_passwd=$(cat passwd.txt |grep "temporary"|awk '{print $NF}')
#$NF表示最后一个字段
# abc=$(命令) 优先执行命令,然后将结果赋值给abc
# 修改PATH变量,加入mysql bin目录的路径
#临时修改PATH变量的值
export PATH=/usr/local/mysql/bin/:$PATH
#重新启动linux系统后也生效,永久修改
echo 'PATH=/usr/local/mysql/bin:$PATH' >>/root/.bashrc
#复制support-files里的mysql.server文件到/etc/init.d/目录下叫mysqld
cp ../support-files/mysql.server /etc/init.d/mysqld
#修改/etc/init.d/mysqld脚本文件里的datadir目录的值
sed -i '70c datadir=/data/mysql' /etc/init.d/mysqld
#生成/etc/my.cnf配置文件
cat >/etc/my.cnf <<EOF
[mysqld_safe]
[client]
socket=/data/mysql/mysql.sock
[mysqld]
socket=/data/mysql/mysql.sock
port = 3306
open_files_limit = 8192
innodb_buffer_pool_size = 512M
character-set-server=utf8
[mysql]
auto-rehash
prompt=\\u@\\d \\R:\\m mysql>
EOF
#启动mysqld进程
service mysqld start
#将mysqld添加到linux系统里服务管理名单里
/sbin/chkconfig --add mysqld
#设置mysqld服务开机启动
/sbin/chkconfig mysqld on
#初次修改密码需要使用--connect-expired-password 选项
#-e 后面接的表示是在mysql里需要执行命令 execute 执行
#set password='123#'; 修改root用户的密码为123#
mysql -uroot -p$tem_passwd --connect-expired-password -e "set password='123#';"
#检验上一步修改密码是否成功,如果有输出能看到mysql里的数据库,说明成功。
mysql -uroot -p'123#' -e "show databases;"
卸载脚本
[root@localhost ~]# cat uninstall_binary_mysql.sh
#!/bin/bash
#停止mysqld服务
service mysqld stop
#删除用户
userdel -r mysql
#删除数据目录和base目录
rm -rf /usr/local/mysql
rm -rf /data/
rm -rf /etc/init.d/mysqld
升级问题
重新安装一遍,使用新的版本
如何判断MySQL服务是否运行?
看端口
lsof -i:3306
netstat -anplut|grep mysqld
看进程
ps aux|grep mysqld
登录
mysql -uroot -p'Sanchuang123#'