centos7之离线安装mysql8.0.26版本.
一级目录理由:在线安装(wget命令形式)linux的网速不敢恭维,仅供个人学习了解;
一:自centos7版本后,系统自带的数据库是mariadb数据库(centos6.5还是默认mysql),所以安装mysql之前,需要卸载系统自带的默认数据库mariadb数据库.如图:
yum命令也将依赖删除,中途[Y/N?] 输入y同意继续卸载;
二:卸载完毕,去官网下载mysql版本:
上传到到centos7上的/etc/local/soft中,并且解压:
解压完有9个rpm安装包.依次安装rpm -ivh 包名全称(注意:安装会有依赖先后等问题,谁被谁需要,就先安装被需要的)
相互rpm包依赖就按照依赖顺序,先后安装;在安装mysql-community-devel-8.0.26xxxxx.rpm时,会出现pkgconfig(openssl)被需要,执行# yum install openssl-devel -y 安装即可;
还有就是在安装mysql-community-test-8.0.26xxxxxx.rpm时,需要
perl(Data::Dumper) 被 mysql-community-test-8.0.26-1.el7.x86_64 需要
perl(JSON) 被 mysql-community-test-8.0.26-1.el7.x86_64 需要
perl(Test::More) 被 mysql-community-test-8.0.26-1.el7.x86_64 需要
依次执行:
yum install perl-Data-Dumper -y
yum install perl-JSON -y
yum intall perl-Test-Simple -y
即可将九个rpm包全部安装完毕;
要想修改mysql配置文件路径(vi /etc/my.cnf),最后,有mysql文件的生成路径,这里不做修改,使用默认路径;
接下来对mysql初始化.和权限的赋予
mysql目录内容被初始化后,具有了内容.
修改/var/lib/mysql的访问权限:
启动mysql服务
可以顺便设置一下,mysql服务开机自启动,不用每次开机都要执行systemctl start mysqld.service.
登陆数据库,需要查看数据库的初始密码(第一次登陆,初始密码自动生成在日志/var/log/mysqld.log中)
mysql -uroot -p
password: 密码复制粘贴
不修改密码,无法执行其他操作.这里需要修改密码; 命令:alter user ‘root’@‘localhost’ identified by ‘你自定义的新密码’;<修改user表,用户为root,可以访问的主机ip地址为localhost(本机)>
修改密码时如果你的密码过于简单,会报出如下错误:
依次执行以下命令:set global validate_password_policy=0;
set global validate_password_length=1;
set global validate_password_mixed_case_count=2;修改完密码规则
之后,就可以修改为简单密码了:alter user ‘root’@‘localhost’ identified by ‘你自定义的新密码’;
修改完毕,无需退出<退出测试一下新密码也可以>,立即可以操作数据库;
目前mysql安装完毕,需要连接centos7系统上的mysql数据库.(这里使用Navicat连接它,发现无法连接服务器)
缘由:发现是mysql数据库root用户的远程访问没有权限,只能linux虚拟本机<localhost即为虚拟机ip>访问mysql,不能远程访问.如图:
发现,root用户的host为localhost可以访问,只能本机访问.(host列表指定允许用户登陆所使用的ip地址,比如user=root Host=192.168.1.1。这里的意思就是说root用户只能通192.168.1.1的客户端去访问,而%是个通配符,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。如果Host=%,表示所有IP都有连接权限。这也就是为什么在开启远程连接的时候,大部分人都直接把Host改成%的缘故,为了省事…命令: update user set host=’%’ where user =‘root’;)
修改完root用户对应的可以访问的主机为%后,需要给与’root’@’%'这个用户赋予权限;如图:
还是密码太简单,在执行一遍上面的三句修改密码规则的命令之后,需要打开连接数据库权限,执行以下命令即可:
grant all privileges on . to ‘root’@’%’ identified by ‘简单新密码’ with grant option;
flush privlileges; 刷新权限然后发现修改完host为%后还是报出上面图2003无法连接mysql服务器,后来退出mysql服务器,发现centos系统的防火墙是开启的(防火墙会影响网络连接登陆).如图
于是需要关闭防火墙(注意centos6版本的系统关闭防火墙的命令不太一样<略>):
连接远程服务器,还需要在服务器上开放对应的mysql端口号(设置对应安全组开放服务器端口号)<can’t connet to MYSQL server on "ip地址"需注意几个点:防火墙,服务器是否开启对应端口号,是否授予用户root的访问权限等>
最后:安装完成.测试远程工具连接即可;
追加:mysql8.0以上版本,丢失用户密码,解决方案!
1.在/etc/my.cnf配置文件的末尾添加 skip-grant-tables
2.重启mysql:systemctl restart mysqld
3.直接登陆,mysql -uroot ;这里不需要密码
4.登陆进入mysql后,使用mysql数据库: use mysql
5.管理用户的是user表:
select host,user,authentication_string from user (查看一下用户密码)
将对应忘记密码的用户的authentication_string密码选项清空
update user set authentication_string=‘空占位符’ where user=‘root’;
6.退出mysql
7.重启mysql服务: systemctl restart mysqld
8.mysql -uroot 无密码登录到root模式。
9.查看root用户:
select host,user,host from user where user=‘root’;
10.更新root密码:
alter user 'root@‘localhost’ identified by ‘new_password’;(这里localhost是9中的host)
11.修改完密码,退出mysql,删除配置文件中的skip-grant-tables ;重启mysql服务器;
12.刷新权限:
flush privileges;
13.正常密码登陆
总结:先利用skip-grant-tables ,进入mysql,将mysql数据库中的user表中的用户对应的密码项authentication_string 改为空(必须先改为空,不然无法使用alter命令),然后退出,重启mysql.依旧利用skip-grant-tables 进入mysql,然后利用alter修改用户对应的密码(这经过重启的mysql,可以通过alter修改密码了),修改密码完毕,退出,取消skip-grant-tables的配置文件内容,进入mysql使用密码即可