CentOS7.5安装MySQL5.7.22(新服务器)
1、获取MySQL安装包
①下载安装包
访问https://dev.mysql.com/downloads/mysql/5.7.html#downloads,选择MySQL版本5.7.22,系统选择RedHat,版本号选择7(CentOS是基于红帽内核的,所以选择RedHat),之后选择Compressed TAR Archive进行下载
②使用wget命令
wget http://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.7/mysql-5.7.22-el7-x86_64.tar.gz
//当Mysql最新版本更新后,旧版本会失效,wget会报404,将链接中的版本改为最新版本即可
2、卸载MariaDB
CentOS7默认安装了MariaDB数据库,不卸载直接安装MySQL会有冲突
rpm -qa | grep maria //查看已安装的名称包含maria的应用
yum remove mariadb-libs-5.5.56-2.el7.x86_64 -y //卸载该应用
3、解压
进入安装包所在目录,将下载好的包解压至/usr/local目录
tar -zxvf mysql-5.7.22-el7-x86_64.tar.gz -C /usr/local
待解压完成后,重命名解压得到的文件夹
cd /usr/local
mv mysql-5.7.22-el7-x86_64 mysql
解压完之后,安装包mysql-5.7.22-el7-x86_64.tar.gz删除即可
4、添加用户组和用户
groupadd mysql //添加用户组
useradd -r -g mysql mysql //添加用户mysql 到用户组mysql,-r表示此用户是程序用户,不可用来登录系统
5、 给mysql用户指定专有用户和用户组
首先在/usr/local/mysql目录下创建data目录
mkdir data
指定用户和用户组
cd /usr/local
chown -R mysql mysql/
chgrp -R mysql mysql/
//-R包含目录下所有和目录和文件
6、初始化MySQL
进入mysql的bin目录进行初始化
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US
初始化完毕后,最后一行会打印得到的随机密码(一会登录要用),记录下来,我的运行示例如下:
[root@instance-f0oo0g91 bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US
2018-07-17T09:22:18.945005Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-07-17T09:22:21.076733Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-07-17T09:22:21.374300Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-07-17T09:22:21.456323Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: e894a53b-89a2-11e8-bc01-fa163ec4e0bb.
2018-07-17T09:22:21.458760Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-07-17T09:22:21.459354Z 1 [Note] A temporary password is generated for root@localhost: %3650kSy&;?p
密码即为:%3650kSy&;?p
7、配置my.cnf
使用默认的/etc/my.cnf作为文件位置,关于mysql怎样识别my.cnf文件,可以参考这个文章:https://blog.csdn.net/djcode/article/details/78621772
vi /etc/my.cnf
精简版配置:
[mysqld]
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/
8、启动MySQL
cd /usr/local/mysql/bin
./mysqld_safe --user=mysql &
9、设为开机启动
cd /usr/local/mysql/support-files/
cp mysql.server /etc/init.d/mysql
vi /etc/init.d/mysql,将mysql目录补充上
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/
授权:
chmod +x /etc/init.d/mysql
设为开机启动:
chkconfig --add mysql
10、MySQL启动、停止命令
重启服务:service mysql restart
停止服务:service mysql stop
启动服务:service mysql start
查看服务:service mysql status
11、收尾工作
进行到此步骤时已经可以登录和使用MySQL了,不过首先我们要创建mysql命令的软链接,否则每次登录MySQL都需要进入/usr/local/mysql/bin目录下。创建软链接的命令如下:
ln -s /usr/local/mysql/bin/mysql /usr/bin
创建完毕后我们就可以在任何目录下使用mysql命令了,使用刚才获得的随机密码进行登录
mysql -u root -p
//登录成功后修改密码
set password=password("root"); //引号内填写你的新密码
这时候就可以在本机上使用MySQL服务了,但是我们一般需要远程连接数据库获取服务,所以还需要授权远程访问权限
例:给root用户授予任意ip访问权限
grant all privileges on *.* to 'root'@'%' identified by 'mypassword' with grant option;
//mypassword为你的密码
出于安全考虑,你也可以指定任意ip进行授权,将%改为ip即可
授权完毕后,要使修改生效,要执行
flush privileges;
到这一步MySQL的安装就完全完成了。
远程访问MySQL可能被防火墙拦截,需要关闭防火墙或者开放3306端口
CentOS7默认使用firewalld作为防火墙,iptables被默认不启动,但仍可继续使用。
①firewalld基本操作
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
②开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
//--permanent 永久生效,没有此参数重启后失效
firewall-cmd --reload //使配置生效
如果你用的是阿里云服务器,它默认不开启80及3306端口,需要在安全组里添加规则