1、安装新版mysql之前,我们需要将系统自带的mariadb-lib卸载
[root@5201351 ~]# rpm -qa|grep mariadb mariadb-libs-5.5.41-2.el7_0.x86_64 [root@5201351 ~]# rpm -e mariadb-libs-5.5.41-2.el7_0.x86_64 --nodeps
2、到mysql的官网下载最新版mysql的rpm集合包:mysql-5.7.9-1.el7.x86_64.rpm-bundle.tar
3、上传mysql-5.7.9-1.el7.x86_64.rpm-bundle.tar到linux服务器,并解压tar包
4、其中最简单的安装mysql-server服务,只需要安装如下4个软件包即可,我们可以使用rpm -ivh命令进行安装,(注意安装顺序,如果不卸载mariadb-lib,此时安装会报错。)
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 --(依赖于common)
rpm -ivh mysql-community-client-5.7.9-1.el7.x86_64.rpm --(依赖于libs)
rpm -ivh mysql-community-server-5.7.9-1.el7.x86_64.rpm --(依赖于client、common)
5、接下来是初始化数据库,我们使用如下几条命令均可,效果都是一样的
[root@5201351 ~]# mysql_install_db --datadir=/var/lib/mysql //必须指定datadir,执行后会生成~/.mysql_secret密码文件 [root@5201351 ~]# //mysqld --initialize //新版的推荐此方法,执行生会在/var/log/mysqld.log生成随机密码
mysql在进行初始化的时后,会检测数据目录是否存在,
如过不存在,mysql会创建它,
如果存在,而且这个目录里有数据,mysql会报错,并且终止初始化:Initializing MySQL database: 2017-06-26T02:33:40.212541Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2017-06-26T02:33:40.215791Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting. 2017-06-26T02:33:40.215877Z 0 [ERROR] Aborting
将这个数据目录删掉,或者重命名,如果数据比较重要,建议重命名,后期再重新导入就ok了
我用的rpm包安装,默认数据目录在
/var/lib/mysql/我将它直接删掉
rm -fr /var/lib/mysql
6、更改mysql数据库目录的所属用户及其所属组,然后启动mysql数据库,
(如果mysql没有指定用户组, "Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.")
[root@5201351 ~]# chown mysql:mysql /var/lib/mysql -R [root@5201351 ~]# systemctl start mysqld.service //启动mysql数据库服务
7、根据第5步中的密码登录到mysql,更改root用户的密码,新版的mysql在第一次登录后更改密码前是不能执行任何命令的
[root@5201351 ~]# mysql -uroot -p'j#uRig4yJ' mysql> set password=password('123456');
8、最后我们还可以根据实际情况创建用户,及作权限分配
mysql> create user 'root'@'192.168.100.2' identified by 'QQ5201351'; mysql> GRANT ALL PRIVILEGES ON dbname.* to 'root'@'192.168.100.2'; mysql> flush privileges
9.mysql 远程访问权限。
mysql> USE mysql; -- 切换到 mysql DB
mysql> SELECT User, Host FROM user; -- 查看现有用户,密码及允许连接的主机 (注:mysql7 没有password字段)
//1,授权方式,允许ROOT用户在任意IP连接数据库。 mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' IDENTIFIED BY '' WITH GRANT OPTION;
//2,更改数据库,当然我们也可以直接用 UPDATE 更新 root 用户 Host, 但不推荐, SQL如下: UPDATE user SET Host='%' WHERE User='root' AND Host='localhost' LIMIT 1;
10,配置 防火墙
使用命令的方式配置CentOS7防火墙
##Add
firewall-cmd --permanent --zone=public --add-port=3306/tcp
##Remove
firewall-cmd --permanent --zone=public --remove-port=3306/tcp
##Reload
firewall-cmd --reload
检查是否生效
firewall-cmd --zone=public --query-port=33060/tcp
列出所有的开放端口
firewall-cmd --list-all
查看防火墙状态
systemctl status firewalld.service
启动防火墙
systemctl start firewalld.service
关闭防火墙
systemctl stop firewalld.service
重新启动防火墙
systemctl restart firewalld.service
11.配置开机自动启动。
systemctl enable mysqld.service //设置开机自动启动 systemctl status mysqld.service //查看状态
systemctl disable mysqld.servic //禁用开机启动
成功。。。。。。。。。。。。。。。