前言
Linux上安装软件常见的几种方式:
- 源码编译
- 压缩包解压(一般为tar.gz)
- 编译好的安装包(RPM、DPKG等)
- 在线安装(YUM、APT等)
本人结合MySQL官网,结合官方提供的下载链接,为了更方便进行各个版本的下载安装,采用rpm的方式进行下载安装
官网下载
MySQL官网地址:www.mysql.com/
下载完成之后,就可以开始安装啦。
MYSQL5.7安装步骤
1.删除已安装的MySQL
检查mysql
rpm -qa | grep mysql
如果存在则删除
rpm -e xxx --nodeps
检查MariaDB
shell> rpm -qa | grep mariadb
mariadb-libs-5.5.64-1.el7.x86_64
删除MariaDB
shell> rpm -e mariadb-libs-5.5.64-1.el7.x86_64 --nodeps
2.安装MySQL
解压
shell> tar xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
mysql-community-embedded-5.7.28-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
mysql-community-devel-5.7.28-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.28-1.el7.x86_64.rpm
mysql-community-libs-5.7.28-1.el7.x86_64.rpm
mysql-community-test-5.7.28-1.el7.x86_64.rpm
mysql-community-common-5.7.28-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.28-1.el7.x86_64.rpm
mysql-community-client-5.7.28-1.el7.x86_64.rpm
mysql-community-server-5.7.28-1.el7.x86_64.rpm
我们主要安装的是这四个(如果有需要也可以一并安装其它的):
mysql-community-libs-5.7.26-1.el7.x86_64.rpm
mysql-community-common-5.7.26-1.el7.x86_64.rpm
mysql-community-client-5.7.26-1.el7.x86_64.rpm
mysql-community-server-5.7.26-1.el7.x86_64.rpm
安装
rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
3.启动配置Mysql
启动mysql服务
systemctl start mysqld
4.修改默认密码
在mysql服务启动的时候,会自动创建一个root@localhost用户,默认密码会在/var/log/mysqld.log文件中生成
查看默认密码
grep 'temporary password' /var/log/mysqld.log
登陆mysql
mysql -uroot -pxxxx
修改密码
mysql> alter user 'root'@'localhost' identified by '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
提示修改的密码过于简单,解决办法为:
- 设置复杂密码,包含字母、数字等
- 修改mysql配置,修改配置文件/etc/my.cnf,添加validate_password=OFF,保存并重启MySQL
5.设置编码集为UTF8
查询编码集
mysql> show variables like '%character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
修改为UTF8
编辑/etc/my.cnf文件,在[mysqld]下添加如下,并重启mysql服务
[mysqld]
character_set_server=utf8
init-connect='SET NAMES utf8'
6.设置可以远程登录访问
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
mysql> flush privileges;
7.设置开机自启
systemctl enable mysqld
systemctl daemon-reload
8.创建普通用户,并赋予root同等权限
create user 'username'@'%' identified by 'passwod';
grant all privileges on *.* to 'username'@'%' with grant option;
9.更改mysql的物理库位置
mysql物理库默认在/var/lib/mysql,由于数据库的增大,该目录磁盘可能不能满足,这时候我们就需要更改mysql的物理位置
关闭mysql服务
systemctl stop mysqld
新建物理库位置
mkdir -p /home/mysql_data/
# mysql启动会以mysql用户权限进行操作,root权限可能导致mysql无法启动
chown mysql:mysql /home/mysql_data/
从旧的物理库转移数据
# -a 一定需要添加,会连同权限一起添加上
cp -a /var/lib/mysql /home/mysql_data/
修改my.cnf配置文件
#修改前先备份,防止出错,便于还原
cp /etc/my.cnf /etc/my.cnf.bk
vim /etc/my.cnf
#datadir=/var/lib/mysql
#修改如下
datadir=/home/mysql_data/mysql
#socket=/var/lib/mysql/mysql.sock
#修改如下
socket=/home/mysql_data/mysql/mysql.sock
# 新增如下客户端的内容,否则执行mysql -uroot -p密码会报错如下
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
[client]
default-character-set=utf8
# 与server端的mysql.sock目录一致
socket=/home/mysql_data/mysql/mysql.sock
修改mysqld配置文件
cp /etc/init.d/mysqld /etc/init.d/mysqld.bk
vim /etc/init.d/mysqld
# 如果没有则不需要修改
datadir=/var/lib/mysql
#修改如下
datadir=/home/mysql_data/mysql
重启mysql服务
systemctl start mysqld
# 如果启动失败,临时关闭setenforce防火墙,在重新启动
setenforce 0
10.mysql的卸载
本文使用rpm安装mysql,所以重点介绍rpm版的mysql卸载方式
删除mysql依赖
# 停止mysql服务
systemctl stop mysqld
# 查询mysql相关依赖
rpm -qa | grep -i mysql
# 进行删除
rpm -e mysql-community-server-5.7.28-1.el7.x86_64
rpm -e mysql-community-client-5.7.28-1.el7.x86_64
rpm -e mysql-community-libs-5.7.28-1.el7.x86_64
rpm -e mysql-community-common-5.7.28-1.el7.x86_64
删除配置文件
rm -rf /var/lib/mysql
rm /etc/my.cnf
rm -rf /root/.mysql_history
#查找mysql文件,setenforce防火墙下也有mysql,注意删除错文件
whereis mysql
find / -name mysql
# 进行删除
删除自启服务
chkconfig --list | grep -i mysql
chkconfig --del mysqld
11.mysql主从复制的实现
- 主机:192.168.126.20
- 从机:192.168.126.30
主机配置文件的修改
vim /etc/my.cfg
#mysql主从配置,主机配置
server-id=1
#通过log-bin文件进行复制,创建/var/log/mysql文件夹,然后修改为mysql用户组权限
log-bin=/var/log/mysql/mysql-bin.log
#想要复制的数据库
binlog-do-db=my_demo
#如果想复制多个数据库A,B,C
则不能binlog_do_db=A,B,C
正确配置如下:
binlog_do_db=A
binlog_do_db=B
binlog_do_db=C
#屏蔽系统库同步
binlog‐ignore‐db=mysql
binlog‐ignore‐db=information_schema
binlog‐ignore‐db=performance_schema
重启mysql,进入mysql查询master配置
#新建用户配置主从复制
GRANT REPLICATION SLAVE ON *.* TO 'username'@'从机地址' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.126.30' IDENTIFIED BY '123456';
flush privileges;
show master status;
从机配置文件的修改
vim /etc/my.cfg
#mysql从机配置
server-id=2
进行mysql管理控制台
#从机配置
stop slave;
show slave status\G;
CHANGE MASTER TO MASTER_HOST='主机地址',MASTER_USER='主从配置用户名',MASTER_PASSWORD='主从配置用户密码',MASTER_LOG_FILE='log-bin日志文件file',MASTER_LOG_POS=logn-bin文件配置;
CHANGE MASTER TO MASTER_HOST='192.168.126.20',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=603;
#开启主从复制
start slave;
如下则表示成功:
12.mysql的优化
在预生产环境中,我们可能需要开启慢查询日志,开启至少一天,设置查询阈值,所有超过阈值的sql都将会被记录下来。然后在explain分析sql,优化sql语句,或者对mysql服务器进行配置层面的优化。
开启mysql的慢查询功能
平常这个功能是关闭的,在我们排查完问题后,建议关闭该功能,避免不必要的消耗
mysql> show variables like '%slow_query_log%';
+---------------------+-----------------------------------+
| Variable_name | Value |
+---------------------+-----------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | /var/lib/mysql/localhost-slow.log |
+---------------------+-----------------------------------+
2 rows in set (0.00 sec)
# 开启慢查询日志功能
set global slow_query_log = 1
# 查询慢查询sql的阈值,超过改值则为慢SQL
mysql> SHOW VARIABLES LIKE 'long_query_time%';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.01 sec)
# 设置慢查询阈值,需要重新打开会话,才可以看到long_query_time的变化
set global long_query_time=3;
# 查询当前系统中有多少条慢查询记录
show global status like '%slow_queries%';
修改mysql配置文件实现
在[mysqld]下配置
slow_query_log=1;
slow_query_log_file=/var/lib/mysql/my-slow.log
long_query_time=3;
log_output=FILE
MYSQL8.0安装步骤
mysql rpm(redhat package manage)安装
根据mysql5.7的安装截图从oracle官网下载mysql8.0的rpm安装包,并上传到服务器上
确认相关依赖,没有则需要下载
rpm -qa|grep libaio
rpm -qa|grep net-tools
解压
tar xvf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar
安装
rpm -ivh mysql-community-common-8.0.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.25-1.el7.x86_64.rpm
可能存在的错误
一个命令:yum remove mysql-libs 解决,清除之前安装过的依赖即可
查看Mysql版本
执行如下命令,如果成功表示安装mysql成功。类似java -version如果打出版本等信息
mysql --version
#或
mysqladmin --version
执行如下命令,查看是否安装成功。需要增加 -i 不用去区分大小写,否则搜索不到。
rpm -qa|grep -i mysql
服务的初始化
由于MYSQL的数据是存储在磁盘上的,所以我们的磁盘空间必须足够,默认的持久化地址为/var目录下,我们可以修改mysql的配置文件,修改持久化地址
创建相关目录,并将目录权限授予mysql用户
mkdir -p /opt/mysql/lib/mysql
mkdir -p /opt/mysql/log
mkdir -p /opt/mysql/run
chown -R mysql:mysql /opt/mysql
修改配置文件
vim /etc/my.cnf
datadir=/opt/mysql/lib/mysql
socket=/opt/mysql/lib/mysql/mysql.sock
log-error=/opt/mysql/log/mysqld.log
pid-file=/opt/mysql/run/mysqld/mysqld.pid
# 新增client内容,否则客户端mysql命令默认从/var/lib/mysql/mysql.sock读取mysql进程信息
[client]
socket=/opt/mysql/lib/mysql/mysql.sock
初始化mysql
为了保证数据库目录与文件的所有者为 mysql 登录用户,如果你是以 root 身份运行 mysql 服务,需要执 行下面的命令初始化:
mysqld --initialize --user=mysql
说明: --initialize 选项默认以“安全”模式来初始化,则会为 root 用户生成一个密码并将该密码标记为过期 ,登录后你需要设置一个新的密码。生成的 临时密码 会往日志中记录一份。
查看密码
cat /var/log/mysqld.log
启动mysql
systemctl start mysqld
其他
- 查看mysql是否自启动
systemctl list-unit-files|grep mysqld.service
systemctl enable mysqld.service
systemctl disable mysqld.service
设置大小写不敏感
1、停止MySQL服务
2、删除数据目录,即删除 /var/lib/mysql(默认) 目录
3、在MySQL配置文件( /etc/my.cnf )中[mysqld]添加 lower_case_table_names=1
4、启动MySQL服务