【1】MySQL版本与rpm下载
通常我们选择的都是MySQL Community Server。
- MySQL Community Server社区版本,开源免费,自由下载但是不提供官方技术支持。
- MySQL Enterprise Edition 企业版本,需付费,不能在线下载,可以试用30天。提供了更多的功能和更完备的技术支持,更适合于对数据库的功能和可靠性要求较高的企业客户。
- MySQL Cluster集群版,开源免费。用于架设集群服务器,可将几个MySQL Server封装成一个Server。需要在社区版或企业版的基础上使用。
- MySQL Cluster CGE高级集群版,需付费。
此外,官方还提供了MySQL Workbench(GUITOOL)一款专为MySQL设计得ER/数据库建模工具。它是著名的数据库设计工具DBDesigner4的继任者。MySQL Workbench又分为两个版本,分表是社区版(MySQL Workbench OSS)、商用版(MySQL Workbench SE)。
如下所示,可以选择操作系统以及操作系统版本。如果当前GA版本不是想要的,可以点击右侧Archives选择其他GA版本。
以mysql-8.0.32-1.el7.x86_64.rpm-bundle为例,其中mysql-8.0.32为版本,1
为发布次数即1次,el7.x86_64
为操作系统版本。这里我们下载该离线版RPM包。
这里我们下载mysql-8.0.25-1.el7.x86_64.rpm-bundle.tar
,(mysql-8.0.32-1.el7.x86_64.rpm-bundle资源没有下载下载从其他途径得到了8.0.25)得到的rpm包解压后如下所示:
我们只需要抽取如下五个进行安装即可。如果是MySQL5.7则不需要mysql-community-client-plugins-xxxx
mysql-community-client-8.0.25-1.el7.x86_64.rpm mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm mysql-community-common-8.0.25-1.el7.x86_64.rpm mysql-community-libs-8.0.25-1.el7.x86_64.rpm mysql-community-server-8.0.25-1.el7.x86_64.rpm
【2】 检查/tmp临时目录权限与依赖
由于MySQL安装过程中,会通过mysql用户在/tmp目录下新建tmp_db文件,所以请给予/tmp较大的权限,通常执行如下命令:
chmod -R 777 /tmp
安装前,检查依赖libaio
rpm -qa |grep libaio
如果存在则如下所示,如果不存在则通过yum命令进行安装。
[root@localhost ~]# rpm -qa|grep libaio libaio-0.3.109-13.el7.x86_64
检查依赖net-tools
[root@localhost ~]# rpm -qa |grep net-tools net-tools-2.0-0.25.20131004git.el7.x86_64
其实正常安装Centos,这些工具都是安装好的。
【3】rpm安装MySQL
将上面我们抽取的5个rpm包上传到/opt/softinstall/mysql
路径下,然后执行命令安装。需要注意的是,安装必须按照顺序执行:
rpm -ivh mysql-community-common-8.0.25-1.el7.x86_64.rpm rpm -ivh mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-8.0.25-1.el7.x86_64.rpm rpm -ivh mysql-community-client-8.0.25-1.el7.x86_64.rpm rpm -ivh mysql-community-server-8.0.25-1.el7.x86_64.rpm
rpm是Redhat Package Manager的缩写,通过rpm的管理,用户可以把源代码包装成以rpm为扩展名的文件形式,易于安装。
安装mysql-community-libs-8.0.25-1.el7.x86_64.rpm可能遇到如下错误:
[root@localhost mysql]# rpm -ivh mysql-community-libs-8.0.25-1.el7.x86_64.rpm warning: mysql-community-libs-8.0.25-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY error: Failed dependencies: mariadb-libs is obsoleted by mysql-community-libs-8.0.25-1.el7.x86_64
意思是mariadb-libs被mysql-community-libs-8.0.2.5-1.el7.x86_64淘汰,通过如下命令我们可以检测到已经安装过mariadb-libs。
root@localhost mysql]# rpm -qa|grep mariadb mariadb-libs-5.5.68-1.el7.x86_64
那么我们可以通过如下命令进行依赖解决,之后再检测就没有了mariadb-libs。继续执行rpm -ivh mysql-community-libs-8.0.25-1.el7.x86_64.rpm
即可。
yum remove mysql-libs
【4】MySQL安装后的检测与使用
① 查看MySQL版本
执行如下命令,如果成功表示安装MySQL成功。
mysql --version #或 mysqladmin --version [root@localhost mysql]# mysql --version mysql Ver 8.0.25 for Linux on x86_64 (MySQL Community Server - GPL) [root@localhost mysql]# mysqladmin --version mysqladmin Ver 8.0.25 for Linux on x86_64 (MySQL Community Server - GPL)
执行如下命令,查看是否安装成功,-i
表示不用区分大小写,否则搜索不到。
rpm -qa|grep -i mysql [root@localhost mysql]# rpm -qa|grep -i mysql mysql-community-server-8.0.25-1.el7.x86_64 mysql-community-client-plugins-8.0.25-1.el7.x86_64 mysql-community-libs-8.0.25-1.el7.x86_64 mysql-community-client-8.0.25-1.el7.x86_64 mysql-community-common-8.0.25-1.el7.x86_64
此时查看mysqld服务状态:
[root@localhost mysql]# systemctl status mysqld ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: inactive (dead) Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html
② 服务的初始化
为了保证数据库目录与文件的所有者均为MySQL登录用户,如果你是以root身份运行MySQL服务的,需要执行下面的命令初始化:
mysqld --initialize --user=mysql
说明:--initialize
选项默认是以“安全”模式来初始化,则会为root用户生成一个密码并将该密码标记为过期,登录后需要设置一个新的密码。生成的临时密码会往日志中记录一份。
查看密码:
[root@localhost mysql]# mysqld --initialize --user=mysql [root@localhost mysql]# cat /var/log/mysqld.log 2023-01-27T11:00:23.961580Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.25) initializing of server in progres s as process 52362 2023-01-27T11:00:24.041419Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2023-01-27T11:00:26.819414Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2023-01-27T11:00:32.697960Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: l.o(;/!=E3S*
即临时密码为:l.o(;/!=E3S*
。
③ 启动mysql服务
#启动服务 [root@localhost mysql]# systemctl start mysqld #查看状态 [root@localhost mysql]# systemctl status mysqld ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2023-01-27 03:04:06 PST; 6s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 52458 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) Main PID: 52487 (mysqld) Status: "Server is operational" Tasks: 38 CGroup: /system.slice/mysqld.service └─52487 /usr/sbin/mysqld Jan 27 03:03:33 localhost.localdomain systemd[1]: Starting MySQL Server... Jan 27 03:04:06 localhost.localdomain systemd[1]: Started MySQL Server.
其他关于服务命令:
# 启动服务 systemctl start mysqld # 查看服务状态 systemctl status mysqld # 重启服务 systemctl restart mysqld # 停止服务 systemctl stop mysqld
④ 查看mysql服务是否自启动
[root@localhost mysql]# systemctl list-unit-files|grep mysqld.service mysqld.service enabled
默认是enabled,如果不是enabled可以运行如下命令设置自启动:
systemctl enable mysqld.service
如果希望不进行自启动,运行如下命令设置
systemctl disable mysqld.service
⑤ 登录并修改密码
如下所示使用上面得到的临时密码进行登录,但是再进行进一步操作时会提示要求修改密码。
[root@localhost mysql]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.25 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> use mysql; No connection. Trying to reconnect... Connection id: 9 Current database: *** NONE *** ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
修改密码:
alter user `root`@localhost identified by '123456';
⑥ 添加远程登录用户
在MySQL8下执行如下命令会报错:
grant all privileges on *.* to 'root'@'%' identified by '123456!' with grant option; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by '123456' with grant option' at line 1
可以采用如下方式:
# 创建用户并设置密码 create user 'root'@'%' identified by '123456'; #赋予权限 grant all on *.* to 'root'@'%' with grant option; #刷新MySQL的系统权限相关表 flush privileges;
⑦ Navicat远程连接
注意保证网络、端口畅通哦(建议关闭防火墙或者放开默认的3306端口)。在使用Navicat远程连接是还会遇到如下一个问题(MySQL5.7下没有):
解决方法:Linux下登录MySQL然后执行如下SQL即可。
alter user 'root' @'%' identified with mysql_native_password by '123456';