CentOS 安装 MySQL8.0
CentOS 安装 MySQL8.0
查看 Linux 系统信息
通过指令 cat /proc/version
和 cat /etc/redhat-release
查看安装的Linux 系统相关信息。
[root@hadoop1 ~]# cat /proc/version
Linux version 2.6.32-642.el6.x86_64 (mockbuild@worker1.bsys.centos.org) (gcc version 4.4.7 20120313 (Red SMP Tue May 10 17:27:01 UTC 2016
[root@hadoop1 ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
可知本系统是 CentOS 6.8
清理现有系统包含的 MySQL数据库
为防止出现冲突,需要将Linux 系统自带的数据库删除。
通过命令 rpm -qa | grep mysql
检查是否安装有MySQL Server,如果有的话通过命令 rpm -e --nodeps mysql_libs
强力删除(可以不管依赖关系)
[root@hadoop1 ~]# rpm -qa | grep mysql
mysql-libs-5.1.73-7.el6.x86_64
[root@hadoop1 ~]# rpm -e --nodeps mysql-libs
【注意:CentOS 7 及之后的版本将 MySQL 数据库软件从默认的程序列表中移除,用 MariaDB 代替了(MariaDB 数据库管理系统是 MySQL 的一个分支),因此若是版本7及之后,需要删除mariadb数据库。
执行指令 rpm -qa | grep mariadb
检查是否安有MariaDB,如有,则通过指令 rpm -e Mariadb名称 --nodeps
进行删除。(由于本系统是CentOS 6.8 ,因此没有MariaDB数据库)
[root@hadoop1 opt]# rpm -q mariadb
package mariadb is not installed
下载 MySQL 安装包
打开 MySQL 官网:https://dev.mysql.com/downloads/mysql/
由于CentOS 是基于红帽的,因此Select Operating System 选择Red Hat Enterprise Linux,OS Version选择Linux 6,选择第一项 RPM Bundle进行下载,得到一个.tar文件:mysql-8.0.27-1.el6.x86_64.rpm-bundle.tar
Xftp 传输文件
Linux 下新建文件夹:/opt/mysql ,通过Xftp将下载的mysql-8.0.27-1.el6.x86_64.rpm-bundle.tar
传输到 /opt/mysql 目录下。
mkdir /opt/mysql
安装 MySQL
- 切换到 /opt/mysql 目录下,运行命令
tar -xvf mysql-8.0.27-1.el6.x86_64.rpm-bundle.tar
解压文件,得到8个.rpm文件
[root@hadoop1 opt]# cd mysql
[root@hadoop1 mysql]# tar -xvf mysql-8.0.27-1.el6.x86_64.rpm-bundle.tar
mysql-community-client-8.0.27-1.el6.x86_64.rpm
mysql-community-client-plugins-8.0.27-1.el6.x86_64.rpm
mysql-community-common-8.0.27-1.el6.x86_64.rpm
mysql-community-devel-8.0.27-1.el6.x86_64.rpm
mysql-community-libs-8.0.27-1.el6.x86_64.rpm
mysql-community-libs-compat-8.0.27-1.el6.x86_64.rpm
mysql-community-server-8.0.27-1.el6.x86_64.rpm
mysql-community-test-8.0.27-1.el6.x86_64.rpm
- 按以下顺序安装rpm软件包
rpm -ivh mysql-community-common-8.0.27-1.el6.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.27-1.el6.x86_64.rpm
rpm -ivh mysql-community-libs-compat-8.0.27-1.el6.x86_64.rpm
rpm -ivh mysql-community-client-8.0.27-1.el6.x86_64.rpm
rpm -ivh mysql-community-server-8.0.27-1.el6.x86_64.rpm
- 通过
rpm -qa | grep mysql
命令查看已安装的rpm包
[root@hadoop1 mysql]# rpm -qa | grep mysql
mysql-community-libs-8.0.27-1.el6.x86_64
mysql-community-libs-compat-8.0.27-1.el6.x86_64.rpm
mysql-community-client-8.0.27-1.el6.x86_64
mysql-community-server-8.0.27-1.el6.x86_64
mysql-community-common-8.0.27-1.el6.x86_64
开启 MySQL
初始化MySQL
mysqld --initialize
更改所属组
chown -R mysql:mysql /var/lib/mysql
启动MySQL
service mysqld start
注:CentOS 7.0后不再使用service,而是systemctl,指令如下:
systemctl start mysqld.service;
登录MySQL
查询初始登录密码
要登录 MySQL 必须先找出 root 用户默认的密码。
-
初始密码保存在
/var/log/mysqld.log
文件中 -
查看生成的临时root密码:
cat /var/log/mysqld.log | grep password
[root@hadoop1 mysql]# cat /var/log/mysqld.log | grep password
2022-01-17T16:12:45.173720Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ;g%74Slqzj76
- 从以上命名执行结果可知
;g%74Slqzj76
即为root用户初始登录密码
验证 MySQL 登录是否成功
输入指令:mysql -uroot -p
输入指令后敲回车会要输入密码,密码为上述root用户初始登录密码,注意:输入的密码是不显示的。
[root@hadoop1 mysql]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.27
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
修改登录密码
如果不修改初始登录密码,随便运行一个命令后mysql会强制要求我们改密码,因此需要我们修改登录密码。
① 先设置复杂密码(由于MySQL密码策略,此密码必须足够复杂)
mysql> set password=password(“Qs23=zs32”);
② 更改MySQL密码策略
mysql> set global validate_password_length=4; 【设置mysql密码最小可以为4位】
mysql> set global validate_password_policy=0; 【设置mysql密码策略为0级(最小级别)】
③ 设置简单好记的密码
mysql> set password=password(“123456”);
设置root用户允许远程登录数据库
默认情况下MYSQL数据库的系统数据库mysql系统表user内用户权限只提供localhost本机登陆,即root用户无法远程连接mysql,只可以本地连,对外拒绝连接。因此,需要建立一个允许远程登录的数据库帐户,这样才可以进行在远程操作数据库。
mysql> use mysql;
mysql> select host,user from user;
由此可以看出,只能以localhost的主机方式访问。
通过以下命令设置任意一台机器都可以通过root用户、密码123456远程登录数据库。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
以上各参数参考下面解释:
grant all privileges on 库名.表名 to ‘用户名’@‘IP地址’ identified by ‘密码’ with grant option;
库名:要远程访问的数据库名称,所有的数据库使用“”
表名:要远程访问的数据库下的表的名称,所有的表使用“”
用户名:要赋给远程访问权限的用户名称
IP地址:可以远程访问的电脑的IP地址,所有的地址使用“%”
密码:要赋给远程访问权限的用户对应使用的密码
③ 刷新修改后的权限
mysql> flush privileges;
- 输入
exit;
指令退出 MySQL,而后通过新密码再次登陆
mysql> exit;
Bye
[root@hadoop1 mysql]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 21
Server version: 8.0.27 MySQL Community Server - GPL
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
- 运行
show databases;
命令,检验命令是否能执行
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.03 sec)
MySQL启动、关闭和状态查看
- Mysql的启动:
systemctl stop mysqld
- Mysql的关闭:
systemctl status mysqld
- Mysql的状态查看:
systemctl start mysqld
- 建议设置为开机自启动服务:
systemctl enable mysqld
- 查看是否已经设置自启动成功:
systemctl list-unit-files | grep mysqld
注:以上命令都是CentOS 7.0以后的。
远程访问
开放防火墙端口访问
- 查看目前防火墙的开放端口:
service iptables status
,监听MySQL服务的2030端口没有开放
注:如果没有安装iptables,则需要安装该应用。参考:linux(centos)查看开放的端口及防火墙开放端口及mysql端口查看
- 因此,需要编辑防火墙配置文件开放2030端口。执行指令:
vim /etc/sysconfig/iptables
- 重启防火墙,更改配置文件生效。执行指令:
service iptables restart
再次查看防火墙状态,此时3306端口已打开
-
给予root用户远程访问权限
登录 MySQL 后执行下面三个操作,使得所有ip的电脑都可以使用root用户,密码为123456远程访问Linux的所有MySQL数据库
① 创建用户
create user 'root'@'%' identified with mysql_native_password by '123456';
② 开启权限
grant all privileges on *.* to 'root'@'%' with grant option;
Windows远程连接验证
在windows本地下执行指令 telnet 192.168.149.130(Linux系统ip) 3306
若出现如下界面,则意味着远程访问成功
SQLyog连接Linux远程数据库
打开SQLyog软件,输入Linux主机地址:192.168.149.130;用户名:root;密码:123456;端口号:3306。
【注意:如果在正确输入主机地址、用户名、密码、端口号名情况下,如果出现了错误码1045,如下:
则原因是mysql数据库没有授权目前登陆的用户进行远程连接;
解决办法是授权该用户可以进行远程连接:
grant all privileges on 库名.表名 to '用户名'@'IP地址' identified by '密码' with grant option;
flush privileges;