Centos7下安装步骤
安装新版mysql
之前,我们需要将系统自带的mariadb-lib
卸载
卸载冲突的RPM组件
在我们安装mysql相关组件的时候,如果不将此冲突的组件删除掉,我们是安装不成功的。
我们可以先跳过这步,直接进入下步操作,在安装的过程中会有相应的提示。下面是我所碰到的一个提示:
# 安装mysql组件时出现的依赖错误
error: Failed dependencies:
mysql-community-common(x86-64) >= 5.7.9 is needed by mysql-community-libs-5.7.19-1.el7.x86_64
mariadb-libs is obsoleted by mysql-community-libs-5.7.19-1.el7.x86_64
# 卸载mariadb-libs时出现的依赖错误
error: Failed dependencies:
libmysqlclient.so.18()(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64
libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64
可以看出,我们需要卸载postfix
和mariadb-libs
相关的组件。卸载我们可以使用rpm -ev xxx
- 查看
postfix
和mariadb-libs
rpm -qa | grep postfix
rpm -qa | grep mariadb
- 卸载
postfix
和mariadb-libs
rpm -ev postfix-2.10.1-6.el7.x86_64
rpm -ev mariadb-libs-5.5.52-1.el7.x86_64
下载MySQL rpm
包
下载链接: mysql-5.7.17-1.el7.x86_64.rpm.tar
上传并解压rpm
上传 mysql-5.7.17-1.el7.x86_64.rpm.tar
到Linux
服务器/usr/local/src
,并解压tar
包
tar -xvf mysql-5.7.21-1.el7.x86_64.rpm.tar
执行结果:
[root@localhost software]# tar -xvf mysql-5.7.21-1.el7.x86_64.rpm.tar
mysql-community-client-5.7.21-1.el7.x86_64.rpm
mysql-community-server-5.7.21-1.el7.x86_64.rpm
mysql-community-common-5.7.21-1.el7.x86_64.rpm
mysql-community-libs-5.7.21-1.el7.x86_64.rpm
开始安装
mysql-server服务,只需要安装如下4个软件包即可,我们可以使用rpm -ivh
命令进行安装
依次安装:
rpm -ivh mysql-community-common-5.7.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.21-1.el7.x86_64.rpm
rpm -ivh mysql-community--server-5.7.21-1.el7.x86_64.rpm
libs 依赖于 common
client 依赖于 libs
server 依赖于 client、common
初始化数据库
我们使用如下命令均可
[root@master~]# mysqld --initialize
新版的推荐此方法,执行生会在/var/log/mysqld.log生成随机密码
启动mysql
更改mysql数据库目录的所属用户及其所属组,然后启动mysql数据库
[root@master~]# chown mysql:mysql /var/lib/mysql -R
[root@master~]# systemctl start mysqld.service
修改mysql密码
根据密码登录到mysql,更改root用户的密码,新版的mysql在第一次登录后更改密码前是不能执行任何命令的。
- 查看初始密码
[root@master~]# cat /var/log/mysqld.log | grep 'password'
会看到如下一段:
[Note] A temporary password is generated for root@localhost: h:#EhtdIr7qg
那初始化密码就是对应的 h:#EhtdIr7qg
- 登陆mysql并改密码
[root@master~]# mysql -u root -p h:#EhtdIr7qg
mysql> set password=password('root');
配置mysql
最后我们还可以根据实际情况创建用户,及作权限分配
mysql> create user 'root'@'%' identified by 'root';
mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
mysql> flush privileges;
mysql> exit
设置不区分大小写
[root@master~]# vi /etc/my.cnf
在[mysqld]节点下增加
lower_case_table_names = 1
:wq
退出
防火墙开通3306端口访问
- 查看端口是否可访问
telnet ip 端口号
[root@master~]# telnet localhost 3306
- 开放指定端口
[root@master~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
- 重启防火墙
[root@master~]# firewall-cmd --reload
重启服务并尝试登陆
[root@master~]# service mysqld restart
[root@master~]# mysql -u root -p
最后需要特别提醒注意的一点是,新版的mysql数据库下的user表中已经没有 Password 字段了,而是将加密后的用户密码存储于 authentication_string 字段
mysql启动命令
# 查看mysql是否启动
service mysqld status
# 启动mysql
service mysqld start
# 停止mysql
service mysqld stop
# 重启mysql
service mysqld restart