②在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下用的是冒号分隔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源码包需要)
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
--将本目录中的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
打开官网,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在哪个目录执行,就下载到哪个目录
rpm -Uvh mysql57-community-release-el6-9.noarch.rpm
--或者:
yum localinstall -y mysql57-community-release-el6-9.noarch.rpm
安装之后,在/etc/yum/repos.d多出yum源:
yum install mysql-community-server
service mysqld start
mysql会自动生成临时的密码:
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
设置防火墙,开放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;
这些目录都是提前准备好:
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
注意:
#> make && make install
note:时间超长,有好几次执行到48%就不动了,网上说法说内存太小了,
8、添加系统mysql组合mysql用户(很重要)
#>sudo groupadd mysql
#>sodu useradd -r -g mysql mysql
#>sudo chown -R mysql:mysql ./
[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
[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= 自己的路径
[mysqld]
character-set-server=utf8
datadir=/usr/local/mysql5.7/data
basedir=/usr/local/mysql5.7
socket=/usr/local/mysql5.7/mysql.sock
service mysql start
可能会报错:
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命令了
mysql -uroot -pxxxxxxxx
如果临时密码创建很久,但是没有用,可能出现下面错误:
#>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
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;
#>service mysql restart
建了一个新用户dhh,作为远程登录账号,测试环境也可以修改root的host字段的值为%,这样就不会只限制在localhost登录了
mysql>GRANT ALL PRIVILEGES ON *.* TO 'dhh'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql>flush privileges;
防火墙守护 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 > 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