centOS系统上mysql8.0安装
安装软件-mysql
1、安装前的准备
(1)、卸载残留的资源
a、mariadb的处理
一般centOS默认会安装mariadb数据库。
需要进行查询:rpm -qa|grep mariadb
卸载操作:rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps
注意:--nodeps 在安装和卸载的时候,不考虑其依赖的关系软件
b、mysql的处理(未安装mysql则跳过)
查看这已经安装的mysql的其他依赖:rpm -qa|grep -i mysql
mysql的删除:yum remove mysql-community-server-5.6.36-2.el7.x86_64(这里填自己的数据库)
卸载依赖:yum remove mysql-libs
yum remove mysql-server
yum remove perl-DBD-MySQL
yum remove mysql
注意:如果没有依赖以上命令将会出现
(2)、建议关闭SElinux
该程序配置复杂,与很多程序产生冲突,本身是linux2.6以上版本捆绑的一个安全模块
a、编辑config配置文件:vi /etc/selinux/config
b、设置SELINUX=disabled
c、重启系统,使的配置生效
(3)替换yum源
a、安装wget下载命令:yum -y install wget
b、更新缓存:yum clean all
yum 会把下载的软件包和header存储在cache中,而不自动删除。如果觉得占用磁盘空间,可以使用yum clean指令进行清除,更精确 的用法是yum clean headers清除header,yum clean packages清除下载的rpm包,yum clean all一全部清除
c、缓存服务器的包信息:yum makecache
yum makecache就是把服务器的包信息下载到本地电脑缓存起来,配合yum -C search xxx使用。不用上网检索就能查找软件信息。
(4)(不建议)下载mysql的rpm安装包并在线安装
Yum用来安装软件和卸载软件的,将国外的下载连接替换为国内的下载连接,方便下载
替换yum源为网易的连接:curl -o /etc/yum.repos.d/CentOS-Base.repo mirrors.163.com/.help/CentOS7 -Base-163.repo(如果在线安装,改变连接,之后yum命令会失效)
安装过程中遇到无法使用yum命令,可以重新安装yum源:yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
这里是清理原yum的配置、删除yum.repos.d目录下所有文件 rm -f /etc/yum.repos.d/* 然后重新下载阿里的: wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 清理缓存: yum clean all yum makecache 再次执行 yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm 在线安装 yum install mysql-community-server -y -y表示安装过程中无需确认,直接进入安装环节 |
2、本地安装
下载mysql压缩包文件,并且上传到/root/mysql目录
官网网址:https://downloads.mysql.com/archives/community/,下载并保存到本地。如上述文件目录操作,进行压缩包的移动/root/mysql 目录。
(1)、解压:tar xvf mysql-8.0.11-1.el7.x86_64.rpm-bundle.tar
(2)、安装依赖的第三方程序:yum install perl -y
Perl像C一样强大,像awk、sed等脚本描述语言一样方便,被Perl语言爱好者称之为"一种拥有各种语言功能的梦幻脚本语言"、"Unix 中的王牌工具" |
yum install net-tools -y
net-tools起源于BSD的TCP/IP工具箱,后来成为老版本Linux内核中配置网络功能的工具。但自2001年起,Linux社区已经对其停止维护。同时,一些Linux发行版比如Arch Linux和CentOS/RHEL 7则已经完全抛弃了net-tools,只支持iproute2 作为网络配置工具的一份子,iproute2的出现旨在从功能上取代net-tools。net-tools通过procfs(/proc)和ioctl系统调用去访问和改变内核网络配置,而iproute2则通过netlink套接字接口与内核通讯 |
(3)、依次安装rpm包
rpm -ivh mysql-community-common-8.0.11-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-8.0.11-1.el7.x86_64.rpm rpm -ivh mysql-community-client-8.0.11-1.el7.x86_64.rpm rpm -ivh mysql-community-server-8.0.11-1.el7.x86_64.rpm |
安装界面都大同小异:
(4)、修改mysql安装文件的权限
a、修改/var/lib/mysql目录访问权限,mysql进程需要向目录中写入数据,因此需要设置最高的访问权限: chmod -R 777 /var/lib/mysql
b、初始化数据库目录:mysqld --initialize
初始化数据库目录,root账户会生成一个随机的临时密码。
c、给初始化后生成的所有文件赋予访问权限:chmod -R 777 /var/lib/mysql/*
(5)、启动数据库
a、本地安装数据库:service mysqld start
b、查看root账号临时登录密码:grep ‘temporary password’ /var/log/mysqld.log
c、登录mysql:mysql -uroot -pFnX-a#=01gJ9
注意:如果密码中有不可识别的字符,将密码用单引号括起来 'FnX-a#=01gJ9'
d、进入数据库,更改密码为root:alter user user() identified by "root";
这里在登录的时候一定要加 -u这个参数mysql -uroot -pFnX-a#=01gJ9,不然会出现以下错误
e、设置远程登录,%代表任何ip地址都可远程登录
使用数据库:use mysql;
可以查看数据库中表,其中user是默认创建的表:show tables;
给用户设置权限,让所有ip都能访问:update user set host='%' where user='root';
注意:这里给root引号要是英文的
f、刷新:flush privileges;
g、退出mysql,配置/etc/my.cnf内容,添加
[mysqld]
character_set_server=utf8
bind-address=0.0.0.0
h、重启mysql服务:service mysqld restart
(6)、防火墙配置
a、防火墙开放3306端口:firewall-cmd --zone=public --add-port=3306/tcp --permanent
b、重新加载防火墙:firewall-cmd --reload
c、打开数据库连接工具navicat或者是sqlyog之类,连接linux中3306端口下的mysql
如果出现连接错误,进入mysql执行界面输入以下内容
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
Query OK, 0 rows affected (0.07 sec)
3、测试链接数据库
(1)、安装navicat软件
(2)、添加连接
(3)、连接成功:
关闭防火墙命令:
可能遇到的问题:
放通所有地址的时候,出现以下错误
mysql> update user set host='%' where user='root'; ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
查询数据库中user已经存在,直接刷新权限就好,不用再更新
mysql> select host from user where user = 'root'; +-----------+ | host | +-----------+ | % | | localhost | +-----------+ 2 rows in set (0.11 sec)
刷新:flush privileges;