mysql优化探索(1)四种安装mysql5.7方法:yum安装、rpm包普通安装、二进制包安装、源码包安装(centos7环境下)

一、yum安装

1.下载并安装MySQL官方的 Yum Repository:
    wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
    2.安装用的Yum Repository:
    yum -y install mysql57-community-release-el7-10.noarch.rpm
    3.安装MySQL服务器:
    yum -y install mysql-community-server
    4.启动MySQL:
    systemctl start  mysqld.service
    5.查看MySQL运行状态,运行状态如图:
    systemctl status mysqld.service
    6.修改初始密码:
    通过如下命令可以在日志文件中找出密码:
    grep "password" /var/log/mysqld.log
    进入数据库:
    mysql -uroot -p
    初始密码不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'Yxhy@2019';
    查看密码策略:
    show variables like '%password%';
    修改密码策略:
    vim /etc/my.cnf
    添加validate_password_policy配置:
    选择0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2需要提供密码字典文件
    #添加validate_password_policy配置
    validate_password_policy=0
    #关闭密码策略
    validate_password = off
    重启mysql服务使配置生效
    systemctl restart mysqld

    7. 修改mysql的字符编码(不修改会产生中文乱码问题)
    显示原来编码:
    show variables like '%character%';
    修改/etc/my.cnf添加一下命令:
    [mysqld]
    character_set_server=utf8
    init_connect='SET NAMES utf8'

    8.远程连接授权:
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Yxhy@2019' WITH GRANT OPTION;
    9.刷新:FLUSH PRIVILEGES

    10.连接测试:

     

以上安装方式就是yum安装。

二、普通rpm包安装

1.下载mysql的rpm全安装包,并解压

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.9-1.el7.x86_64.rpm-bundle.tar

tar -xf mysql-5.7.9-1.el7.x86_64.rpm-bundle.tar 

解压出来的文件如下图:

2.查询并卸载系统自带的Mariadb和旧版mysql以便在安装时报冲突和错误

rpm -qa |grep mariadb
rpm -e --nodeps 上一条命令查询出来的文件名
rpm -qa |grep mysql

rpm -e --nodeps 上一条命令查询出来的文件名

3.开始安装mysql的依赖包和服务器包和客户端包,一次执行以下命令:

rpm -ivh mysql-community-common-5.7.9-1.el7.x86_64.rpm 
rpm -ivh mysql-community-libs-5.7.9-1.el7.x86_64.rpm 
rpm -ivh mysql-community-devel-5.7.9-1.el7.x86_64.rpm 
rpm -ivh mysql-community-libs-compat-5.7.9-1.el7.x86_64.rpm 
rpm -ivh mysql-community-client-5.7.9-1.el7.x86_64.rpm 
rpm -ivh mysql-community-server-5.7.9-1.el7.x86_64.rpm 

4.查看mysql的启动状态,并启动mysql

service mysqld status
systemctl start mysqld

5.查看生成的mysql初始密码复制并保存:

grep 'temporary password' /var/log/mysqld.log

6.用初始密码登陆mysql

mysql -u root -p

7.修改密码,后退出

SET PASSWORD FOR 'root'@'localhost'="Yxhy@2019";

exit;

8.无密码登陆修改权限并开放3306端口:

停止mysql

systemctl stop mysqld.service

修改mysql的配置文件,在[mysqld]下面加入以下命令,保存退出

skip-grant-tables

重启并重新登陆mysql

systemctl start mysqld.service

mysql -u root此时不需要密码就能登陆

切换到mysql表修改权限:

use mysql;

update user set authentication_string=password("Yxhy@2019") where user='root' and host='localhost';

FLUSH PRIVILEGES;

exit;

重新修改mysql配置文件vim /etc/my.cnf注释掉skip-grant-tables

重启mysql并尝试新密码登陆后退出:

systemctl restart mysqld.service

mysql -u root -p

exit

9.设置开机自动重启:

systemctl enable mysqld.service;

10.设置远程登陆并开放3306端口

登陆mysql执行以下命令:

mysql -u root -p

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Yxhy@2019' WITH GRANT OPTION;

FLUSH PRIVILEGES;

exit;

查看防火墙状态开放3306端口:

systemctl status firewalld.service

firewall-cmd --zone=public --add-port=3306/tcp --permanent

firewall-cmd --reload

11.测试:

以上就是rpm包安装mysql的方法

三、二进制包安装mysql

1.查询并卸载系统自带的Mariadb和旧版mysql以便在安装时报冲突和错误

rpm -qa |grep mariadb
rpm -e --nodeps 上一条命令查询出来的文件名
rpm -qa |grep mysql

rpm -e --nodeps 上一条命令查询出来的文件名

whereis mysql

find / -name mysql

删除以上两条命令找到的所有的关于mysql的文件夹或文件

2.查看有没有旧的mysql用户和组,如果没有就添加用户组

cat /etc/group | grep mysql

cat /etc/passwd |grep mysql

groupadd mysql

useradd -r -g mysql mysql

2.下载并解压二进制安装包:

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz

tar -zxvf mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz

这里注意的是,我们想把mysql安装在哪就把安装包解压在哪,我的解压在了/home中

重命名解压出来的文件夹并授予归属mysql用户组,并赋予执行权限:

mv mysql-5.7.9-linux-glibc2.5-x86_64 mysql

chown -R mysql:mysql mysql

chmod -R 755 mysql

3.编译安装初始化mysql,这里注意要记住初始化密码:

cd /home/mysql/bin

./mysqld --initialize --user=mysql --datadir=/home/mysql/data --basedir=/home/mysql

4.新建mysql配置文件,添加以下内容:

vim /etc/my.cnf

[mysqld]
datadir=/home/mysql/data
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=400
innodb_file_per_table=1
#表名大小写不明感,敏感为
lower_case_table_names=1
 

5.编辑修改mysql启动文件,把以下目录改成我们自己的mysql安装目录:

vim /home/mysql/support-files/mysql.server

在73行附近,如下图:

6.启动mysql:

/home/mysql/support-files/mysql.server start

7.为了方便操作我们新建软连接,并尝试用短命令重启mysql:

ln -s /home/mysql/support-files/mysql.server /etc/init.d/mysql

ln -s /home/mysql/bin/mysql /usr/bin/mysql

service mysql restart

8.用初始化密码登陆mysql,并修改密码:

mysql -u root -p

set password for root@localhost=password('Yxhy@2019');

use mysql;

update user set host='%' where user='Yxhy@2019';

flush privileges;

exit;

9.设置开机自动重启:

cp /home/mysql/support-files/mysql.server /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

chkconfig --add mysqld

chkconfig --list

10.设置防火墙开启3306端口:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

firewall-cmd --reload

11.测试连接:

以上就是二进制安装mysql方法。

四、源码编译安装mysql

1.安装依赖

yum install -y gcc gcc-c++ cmake ncurses ncurses-devel bison

2.下载mysql源码包(带boost的)

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.25.tar.gz

3.新建一个linux用户mysql

useradd -s /sbin/nologin mysql

4.创建mysql数据保存目录

mkdir -p /data/mysql/data

5.将数据目录的父目录归属于mysql用户,这个/data/mysql/目录我们也用它来存一些mysql的其他文件如mysql.pid文件

chown -R mysql:mysql /data/mysql

6.创建mysql安装目录,并把mysql源码解压到安装目录

mkdir /usr/local/mysql

tar -zxvf mysql-boost-5.7.25.tar.gz  -C /usr/local/mysql/

7.进入/usr/local/mysql/mysql-5.7.25编译安装mysql

cd /usr/local/mysql/mysql-5.7.25

cmake -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost -DWITH_EMBEDDED_SERVER=OFF

make
make install

8.新建或编辑mysql配置文件,注意如果有/etc/my.cnf就直接编辑,没有就新建。

vim /etc/my.cnf,根据需要有选择的写入以下配置项:

[client]
port = 3006

socket = /tmp/mysql.sock

[mysqld]
port = 3306
socket = /tmp/mysql.sock
user = mysql

basedir = /usr/local/mysql
datadir = /data/mysql/data
pid-file = /data/mysql/mysql.pid

log_error = /data/mysql/mysql-error.log

slow_query_log  = 1
long_query_time = 1
slow_query_log_file  = /data/mysql/mysql-slow.log


skip-external-locking
key_buffer_size = 32M
max_allowed_packet =1024M
table_open_cache = 128
sort_buffer_size = 768k
net_buffer_length = 8k
read_buffer_size = 768k
read_rnd_buffer_size = 512k
myisam_sort_buffer_size = 8M
thread_cache_size = 16
query_cache_size =16M
tmp_table_size = 32M
performance_schema_max_table_instances =1000

explicit_defaults_for_timestamp =true
#skip-networking
max_connections = 500
max_connect_errors = 100
open_files_limit =65535

log_bin = mysql-bin
binlog_format=mixed
server_id = 232
expire_logs_days = 10
early-plugin-load = ""

default_storage_engine =InnoDB
innodb_file_per_table = 1
innodb_buffer_pool_size = 128M
innodb_log_file_size = 32M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet =16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 32M
sort_buffer_size =768k
read_buffer = 2M
write_buffer = 2M


# Disabling symbolic-links is recommended to prevent assorted security risks
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/data/mysql/mariadb.log
pid-file=/data/mysql/mariadb.pid

#
# include all files from the config directory
#
#!includedir /etc/my.cnf.d

确保对配置文件中涉及到的所有的目录有有权限,要不然一会儿mysql会无法启动。

9.将/usr/local/mysql/的mysq安装目录和数据保存目录/data/mysql/归属于用户mysql,也就是给mysql用户赋权

chown -R mysql:mysql /usr/local/mysql/

chown -R mysql:mysql /data/mysql/

10.初始化mysql

cd /usr/local/mysql/bin

./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data

11.将启动程序复制到/etc/init.d/mysqld方便运行启动程序,并启动mysql

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

service mysqld start

12.设置环境变量,并设置开机重启:

vim /etc/profile,在最后加入PATH=/usr/local/mysql/bin:$PATH然后保存,然后执行以下命令
source /etc/profile

设置开机重启
systemctl enable mysqld

13.进入mysql设置权限和密码

mysql -u root -p

set password for root@localhost=password('Yxhy@2019');

use mysql;

update user set host='%' where user='Yxhy@2019';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Yxhy@2019' WITH GRANT OPTION;

flush privileges;

exit;

14.防火墙开放3306端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

15.测试:

注意在编译源码安装过程中遇上几点错误。

1.如果编译时用cmake -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost命令不加-DWITH_EMBEDDED_SERVER=OFF会报如下错误

2.启动mysql时,如果对配置文件中对某个文件路径或文件没权限会报如下错误:

以上就是mysql源码编译安装。

以上四种mysql安装方式都已经写完,每一种安装方式又有其优缺点我们要可选择的安装:

rpm安装简单,适合初学者学习使用,但需要单独下载客户端和服务器,安装路径不灵活,默认路径不能修改,一台服务器只能装一个mysql

二进制安装,安装简单可以安装到任何路径,灵活性好,一台服务器能装多个mysql,二进制包是已经编译好的包,性能不如源码编译的好,不能灵活制定编译参数

源码安装可按需定制编译,最灵活,性能最好,一台服务器能安装多个mysql,但是安装过程稍微复杂点,编译时间也最长。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值