centos7配置以及安装mysql5.7

环境:
虚拟机:VMware® Workstation 12.5.2 Pro版本
①Linux系统:CentOS-7-x86_64-Minimal版
②Linux系统:CentOS-6.8-x86_64-minimal版

①mysql数据库:5.7.17 MySQL Community Server (GPL)
②mysql数据库: mysql-5.7.17.tar.gz

说明:
①在centos 6.8环境下采用rpm,yum安装方式,5.7.17 MySQL Community Server (GPL)

②在centos 7 环境下安装的mysql的源码包mysql-5.7.17.tar.gz,自己编译


centos7 安装及网络设置:
思路:新建虚拟机-->指定安装程序iso-->指定内存1G,硬盘20G -->完成
安装完成,连不上外网,因为网卡默认是关闭的


设置网络:

vi /etc/sysconfig/network-scripts/ifcfg-ens33
ONBOOT = yes  网卡启动就开启(关键配置)
IPV6INIT = no  不用ipv6

详细配置:

vi /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=eth0
NM_CONTROLLED=yes
ONBOOT=yes    ##把它改成yes,启动就打开
HWADDR=00:0c:29:5b:1c:de
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.1.223
NETMASK=255.255.255.0
PREFIX=24
GATEWAY=192.168.1.1
DNS1=192.168.1.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no   ##改成no,不用IPV6
NAME="System eth0"
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
USERCTL=no
note:修改后保存重启,就好了,可能不用重启,使网络配置生效的命令暂时没查


虚拟机网络适配器说明
桥接模式:直接连接物理网络(和主机,另外一台虚拟机都ping不通)
NAT模式:用于共享主机的ip地址(这种模式,主机,两台虚拟机之间可以互相ping通)
采用NAT模式,就可以在主机上开XShell来连接虚拟机了
两种模式,虚拟机都可以连接外网


centos6.8 安装及网络设置

先建一台虚拟机(空壳),然后再从设置-->光驱(CD/DVD)中加载系统的镜像文件,再进行安装配置
参考:http://www.jb51.net/os/259962.html

按照这种配置出来,不需要设定网络,直接可以连外网。

查看网络配置:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
TYPE=Ethernet
UUID=39541fbd-63a1-4f76-967a-51e4ee3d228d
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
HWADDR=00:0C:29:C9:1C:5D
PEERDNS=yes
PEERROUTES=yes
LAST_CONNECT=1489281778
ONBOOT默认是打开的,IPV6INIT 配置为no


centos7安装ifconfig命令:

查看/sbin/ifconfig是否存在,如果存在,查看环境变量设置
注意一定是大写:

#echo $PATH 
/usr/local/sbin:usr/local/bin:/sbin:/bin:usr/sbin:usr/bin:/root/bin
window下使用的分号分隔,linux下用的是冒号分隔
我们之所有能直接在任何目录下用命令,是因为这些命令的目录都加载到了环境变量中,就想jdk配置到环境变量中一样
在根目录下 bin,sbin下有很多命令,确保这些目录在环境变量中

如果环境变量中没有包含ifconfig命令的路径
临时修改环境变量:在shell中输入     
$export PATH = $PATH:/sbin

然后再输入ifconfig命令即可,但是这只是临时更改了shell中的PATH,
如果关闭shell,则修改消失,下次还需要重复如上操作
        
永久修改PATH变量使之包含/sbin路径:
打开/etc/profile文件,在其中输入export PATH=$PATH:/sbin,保存并重启即可,
这样一来,PATH路径永久修改成功,以后任何时候只输入ifconfig命令即可

如果ifconfig命令不存在

yum upgrade
yum install net-tools

Centos系统安装基础库以及工具:

当虚拟机可以连接外网,就可以从yum源中安装基础库以及常用工具,mini版很多命令是没有的,比如vim ,wget.. 

从yum源中下载常用的库和工具包:
--所有的最好加上-y参数,加上这个就不需要问你 yes or no,直接采用yes

yum -y install vim
yum -y install wget
yum -y install gcc
yum -y install make

yum -y install gcc-c++         --(安装mysql要cmake,编译cmake要gcc-c++)
yum -y install cmake           --(安装mysql要cmake)
yum -y install lrzsz           --(用XShell工具可以直接拖文件,上传下载功能)
yum -y install ncurses-devel   --(源码方式安装mysql需要) 
yum -y install git             --(安装mysql,cmake编译的时候没有会报错)
yum -y install bison           --(cmake编译mysql源码包需要)

安装rar命令:
默认的yum源中不包含rar unrar
解决办法:
直接下载rar的rpm包安装,但是可能会有依赖

x64版本
wget http://www.rarlab.com/rar/rarlinux-x64-4.2.0.tar.gz
x86版本
wget http://www.rarlab.com/rar/rarlinux-4.2.0.tar.gz

--0、下载源码包,放到源码包文件夹,便于管理
wget http://www.rarlab.com/rar/rarlinux-x64-4.2.0.tar.gz

--1、解压:
tar zxvf rarlinux-x64-4.2.0.tar.gz

--2、移动rar到/usr/local/rar目录
mv rar /usr/local/rar

--3、进入/usr/local/rar目录
cd /usr/local/rar

--4、安装
make && make install

查看相关的命令
rar -help
unrar -help

解压:rar x FileName.rar
压缩:rar a FileName.rar DirName

压缩案例:

--将本目录中的aa.txt bbb.jpg  cc.png压缩到本目录中dest.rar中
[root@centos6 home]# rar a ./dest.rar ./aa.txt ./bbb.jpg ./cc.png

--将本目录中的aa文件夹压缩到本目录中dest.rar中
[root@centos6 home]# rar a ./dest.rar ./aa

Centos 6.8 通过yum安装mysql5.7(缺点:mysql结构很分散,数据文件夹,命令文件夹还要找)
1、官网寻找rpm包

打开官网,mysql提供了yum源 yum Respository
找到要下载的版本,选择redhat版本的,redhat和centos是一个Linux系列的

于是找到了rpm包的url,就可以到linux中下载了

No thanks, just start my download.
2、下载rpm包:

wget https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm
wget在哪个目录执行,就下载到哪个目录

3、执行rpm

rpm -Uvh mysql57-community-release-el6-9.noarch.rpm 
--或者:
yum localinstall -y mysql57-community-release-el6-9.noarch.rpm  
安装之后,在/etc/yum/repos.d多出yum源:
mysql-community-source.repo  mysql-community.repo

yum安装的包默认位置都在/etc/yum.repos.d
yum有安装日志记录:在 /var/log/yum.log下

4、安装mysql

yum install mysql-community-server


5、开启mysql服务:
service mysqld start
mysql会自动生成临时的密码:
在/var/log/mysqld.log下:

在一推日志文件中查看某个字符:
grep 'temporary password' /var/log/mysqld.log      
我经常用的是:
cat /var/log/mysqld.log | grep 'temporary password'

我把密码写在命令行上登录,它提示这样不安全

mysql -uroot -p7Er,FqMMGhpo


6、修改mysql密码安全策略以及修改密码

登录后必须马上修改密码,而且还有安全策略限制

PolicyTestsPerformed
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file
默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
可以修改策略:参考:http://www.cnblogs.com/ivictor/p/5142809.html

大致就这几个命令:

set global validate_password_policy=0;  --把策略修改成0
select @@validate_password_length;  --查看现在策略需要的密码长度
set global @validate_password_length = 4;  --修改密码长度为4

修改密码:

alter user 'root'@'localhost' identified by 'denghh,123';
查看mysql安装目录:
whereis mysql 


7、配置防火墙并且从本机连接虚拟机mysql

设置防火墙,开放3306端口,也可以不开,通过Xsheel打隧道的方式

vi /etc/sysconfig/iptables
添加3306端口

重启防火墙使配置生效:

vi /etc/init.d/iptables restart
--或者
service iptables restart
要从外部连接数据库,数据库账号必须支持,用mysql数据库的user表,查看host字段,看支不支持别的机器连接
select user,host,authentication_string from mysql.user;

在centos7安装mysql5.7.17源码包:

这些目录都是提前准备好:
mysql安装目录在/usr/local/mysql5.7
mysql数据目录在/usr/local/mysql5.7/data

#> mkdir -p /usr/local/mysql5.7/data    --p可以递归创建子目录

1、从官网下载源码包:

MySQL-5.7.16-linux-glibc2.5-x86_64.tar.gz

2、建了一个集中放源码包的地方(便于管理)

mkdir -p /usr/local/software
3、把源码包拖进来(确保前面执行yum -y install lrzsz)

tar zxvf MySQL-5.7.16-linux-glibc2.5-x86_64.tar.gz

4、cmake准备工具以及安装boost包
准备工作:
cmake可能会出现很多问题,因为cmake要用到很多关联的库,确保这些库都安装好了,才能成功编译

#>yum -y install gcc gcc-c++ make cmake ncurses-devel git bison  --也就是前面提到的基础包
cmake 命令也是采用yum源安装方式,因为下源码包太慢,国外资源


-DWITH_BOOST=/usr/local/boost/boost_1_59_0  (下面的cmake要配置)
这条配置有讲究,如果没有装boost,是肯定会报错的,要下载boost,根据报错提示,一定要1.59.0这个版本
国外资源,下载特别慢
[software]>wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
解压到

/usr/local/boost (自建的目录)

准备好了,就可以执行编译了:

5、进入解压文件夹mysql.5.7.17(这是安装包解压目录,还有个mysql5.7目录,是数据库安装目录,别混淆)

6、cmake编译mysql(注意,拷贝的时候要把\后面的空格去掉,不然每一行都直接执行了)

#> cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.7 \
-DMYSQL_UNIX_ADDR=/usr/local/mysql5.7/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/usr/local/mysql5.7/data \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_BOOST=/usr/local/boost/boost_1_59_0 \
-DENABLE_DOWNLOADS=1
注意:
如果cmake出错,要删除这个文件
rm -rf CMakeCache.txt
出错无非就是少包,安装就好了

只要编译成功了,这个编译成功的步骤就可以永久保留了,即使重装,也可以只需要执行下面的操作就好了
没必要再解压tar.gz来重新编译了。

7、编译完成,安装:

#> make && make install 
note:时间超长,有好几次执行到48%就不动了,网上说法说内存太小了,
于是重启了一下机器,或者虚拟机,给虚拟机的内存加到2G,之前1G

8、添加系统mysql组合mysql用户(很重要)

#>sudo groupadd mysql
#>sodu useradd -r -g mysql mysql

9、给数据库文件指定拥有者
cd /usr/local/mysql5.7 , 修改当前目录拥有者为mysql用户
(很重要,因为等下初始化mysql的时候,会写文件到mysql5.7这个目录,如果没有权限,将导致
mysql.sock写入不进来,那么mysql将运行不起来,这个问题困扰我很久,后来重新安装了)

#>sudo chown -R mysql:mysql ./

10、初始化mysql
安装数据库(5.7版本的安装已经不建议使用mysql_install_db 来安装,而是使用mysqld)

[mysql5.7]#>bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql5.7 --datadir=/usr/local/mysql5.7/data
执行完成会生成root的临时密码,一定要保留这个密码


11、执行以下命令创建RSA private key(不知道干嘛用,可能给data数据加密)

[mysql5.7]#>sudo bin/mysql_ssl_rsa_setup  --datadir=/usr/local/mysql5.7/data

12、配置my.cnf和开机启动
[mysql5.7]#> cd support-files
[mysql5.7]#> sudo cp my-default.cnf /etc/my.cnf        ##注意:我用mysql.5.7.18这一步不用执行,etc下有my.cnf这个文件
[mysql5.7]#> sudo cp mysql.server /etc/init.d/mysql   ##这里写mysql,那启动就是service mysql start ,有的命令mysqld
[mysql5.7]#> sudo vim /etc/init.d/mysql  ##修改basedir=自己的路径     修改datadir= 自己的路径

13、修改my.cnf:

[mysqld] 
character-set-server=utf8 
datadir=/usr/local/mysql5.7/data 
basedir=/usr/local/mysql5.7
socket=/usr/local/mysql5.7/mysql.sock

14、启动mysql:
service mysql start
可能会报错:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 的解决办法
解决办法:
上面虽然指定了mysql.sock的位置,但是对于mysql还是会从默认的安装目录/var/lib/mysql/里找这个mysql.sock文件,
找不着,就不知道从哪里启动了。
于是创建一个软连接(快捷方式):
ln –s /usr/local/mysql5.7/mysql.sock /var/lib/mysql/


14.1、启动报错:

 ERROR! MySQL server PID file could not be found!
Starting MySQL.2017-07-01T02:12:33.464827Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however fiists. Create writable for user 'mysql'.
 ERROR! The server quit without updating PID file (/usr/local/mysql5.7/data/localhost.localdomain.pid).

意思就是:有两个日志文件找不到,又没有权限可以创建。

解决办法:vim /etc/my.cnf ,把文件的路径放到/usr/local/mysql5.7下

[mysqld_safe]
log-error=/usr/local/mysql5.7/mariadb.log
pid-file=/usr/local/mysql5.7/mariadb.pid

这样还是会报错,因为文件不存在所以,创建两个文件

echo "" > /usr/local/mysql5.7/mysqld.log

把文件的拥有权给mysql:mysql

chown -R mysql:mysql /usr/local/mysql5.7/mysqld.log

echo "" > /usr/local/mysql5.7/mariadb.log

chown -R mysql:mysql /usr/local/mysql5.7/mariadb.log

chmod -R 755 /usr/local/mysql5.7/data/


15.0、mysql命令找不到

这次安装mysql5.7.18,装完之后,输入mysql命令,提示没有命令,那么只有自己加到环境变量中了

vim /etc/profile

export MYSQL_HOME=/usr/local/mysql5.7
export PATH=$PATH:$MYSQL_HOME/bin


source /etc/profile

于是又mysql命令了


15、登录mysql以及设置密码
mysql -uroot -pxxxxxxxx
如果临时密码创建很久,但是没有用,可能出现下面错误:

mysql5.7 密码过期问题(如果密码没过期,正常登陆了,会提示你修改密码:SET PASSWORD = PASSWORD('123456');即可 )
报错:
ERROR 1862 (HY000): Your password has expired. 
To log in you must change it using a client that supports expired passwords.
解决办法:
#>vim /etc/my.cnf
添加一个配置,就让mysql跳过权限验证
[mysqld]
skip-grand-tables
保存后重启mysql
service mysql restart
--或者
pkill mysql;
service mysql start;
再用之前mysql初始化生成的临时密码登录 
#>mysql -uroot -pxxxxxxxxx
mysql>use mysql;
从5.6还是5.7开始,mysql库中的user表,没有pasword字段,取代的是authentication_string
查数据库用户可以这样写:

select user,host,authentication_string from mysql.user;
mysql.user表的字段(列)太多,看不清楚,可以把行列转换一下
mysql> select * from mysql.user where user='root' \G
可以看到password_expired : Y
这里要修改他的值,改成不过期,并且修改root的密码:
mysql> update mysql.user set password_expired='N' where user='root';
mysql> update mysql.user set authentication_string=password('123456') where user='root'
mysql> flush privileges;
mysql> quit;

修改后,把skip_grand_tables 配置去掉
#>service mysql restart

16、登录后创建自己的用户,并授权用户可以远程连接:

建了一个新用户dhh,作为远程登录账号,测试环境也可以修改root的host字段的值为%,这样就不会只限制在localhost登录了

mysql>GRANT ALL PRIVILEGES ON *.* TO 'dhh'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql>flush privileges;

centos7 防火墙

防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。
它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 
的临时或永久的接口规则,并实时生效而无需重启服务。

很强大,默认提供了很多端口的xml,比如mysql.xml,ssh.xml,把这些系统提供的xml加入到自定义的配置中即可开放这些端口
可以实现指定ip开放某些端口,考虑的企业还没普及这么新的系统,所以还是用原来的iptables来操作。

下载iptables包:

yum -y install iptables-services
vi /etc/sysconfig/iptables #编辑防火墙配置文件
service iptables start #开启
systemctl enable iptables.service #设置防火墙开机启动
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT


[root@bogon bin]# service iptables start
Redirecting to /bin/systemctl start  iptables.service


[root@bogon bin]# systemctl enable iptables.service
Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.

查看防火墙配置:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

设置mysql用户权限:
mysql > update user set host='%' where user = 'root';
mysql > flush privileges;
就可以用mysql front 从本机链接虚拟机的数据库了

从光驱中获取文件:
1、新建cdrom挂载目录

mkdir /mnt/cdrom
2、挂载光驱
mount -t auto /dev/cdrom /mnt/cdrom 
把CentOS CDROM挂载在/mnt/cdrom目录中,就可以访问里面的内容了;使用光驱中的文件,进行安装
查看光驱里面的内容

cd /mnt/cdrom
把内容拷贝出来:
cp -rf xxx xx
取消挂载:
umount /dev/cdrom


你可能感兴趣的:(centos7配置以及安装mysql5.7)