Linux下离线安装MySQL
最近在学习数据库,希望创建一个和实际开发环境比较接近的场景。因此,我考虑在WINDOWS系统下创建一个开发的客户端,在VMware下装载的Ubuntu上部署服务器,在此场景下进行开发学习。在Ubuntu下载MySQL文件,离线安装MySQL,由于对于Linux系统的操作并不熟悉,所以安装花费了较长时间,写下这篇blog记录安装过程,希望能够供大家参考。
Linux系统:Ubuntu 22.04.1 LTS
MySQL 版本:MySQL 8.0.33
1.MySQL离线安装包下载
百度搜索MySQL
点击进入官网或者用下面的链接
MySQL官网链接: https://www.mysql.com/.
进入官网,点击DOWNLOADS
鼠标滚轮往下,最下面一排不显眼的字,点击下载免费的社区版
进入下一个页面之后,由于我们下载的是Linux版本,直接点击MySQL Community Server就行
点击DOWNLOAD下载对应版本的MySQL
注意:一开始我没有注意到这里的选择,所以我选择的是默认情况下的Linux-Generic,操作系统选择还有一个Ubuntu Linux版本的,后面验证过了Linux-Generic版本的MySQL也可以在Ubuntu正常运行
下载之后就会得到一个压缩包文件
2.安装准备
接下来运行命令
tar -zxvf 你对应版本的MySQL压缩包文件名.tar.gz
将其解压
为了方便接下来的操作,将解压之后的文件夹改一个短一点的名字
运行代码
mv 旧的文件夹名 mysql
新的文件夹名字是mysql,你也可以在后面加上对应的版本号,不必写太长。这个文件夹名后面需要用来填写一些相关信息
运行下面的命令将该文件夹移动到/usr/local/
文件夹下
sudo mv mysql /usr/local/
移动到/usr/local/
下
cd /usr/local/
在该目录下我们创建一个空的mysql_data
文件夹用来存放MySQL的数据库,这个路径后面也需要用到
创建该文件夹运行下面命令即可
mkdir mysql_data
3.配置my.cnf文件
在准备好mysql
和mysql_data
文件夹之后,我们还需要配置一个my.cnf
文件放在/etc/
目录下
可以先打开/etc/
目录
cd /etc/
该目录下一开始是没有my.cnf
文件的,需要我们手动创建,使用管理员权限创建一个空的my.cnf
文件,并通过vi
命令进行编辑
sudo touch my.cnfsudo vi my.cnf
然后粘贴以下的信息
[client]port=3306 #服务器的通信端口socket=/tmp/mysql.sock #sock文件这个会自动创建,不用大家手动创建,但是需要指定目录#这里可以在/tmp/目录下再创建一个mysql文件夹将sock文件保存在里面,那这部分可以改成#socket=/tmp/mysql/mysql.sock#这里我偷懒了,推荐利用注释里的方式[mysqld]port=3306user=mysql #下文将会有说明socket=/tmp/mysql.sock #记得和上面对应basedir=/usr/local/mysql #之前已经准备好的mysql文件,解压改名之后得到的文件夹datadir=/usr/local/mysql_data #这是自己创建的空的mysql_data文件夹
这样,重要的东西就已经准备好了
接下来创建Linux系统中的用户组与用户,用来实现访问控制
groupadd mysql #创建mysql的用户组useradd -g mysql mysql #在用户组下创建用户,注意这里应该是和my.cnf中的user对应
4.启动mysql.server
到了比较重要的部分了,启动mysql.server
之后我们就可以正常使用MySQL了
运行以下命令进行初始化操作
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql_data/#大家注意文件夹路径的对应关系即可,这些文件都是我们前文中准备好的
执行命令成功之后就会得到一个随机密码
!!记得把这个随机密码复制粘贴一下,后面登录需要用到!!
(图片来自其他博主,我之前的运行图片忘记保存了。。。执行结果相同,密码是随机的)
接下来赋予创建的用户处理之前提到的sock
文件的权限
chown -R mysql:mysql /tmp/ #因为我的sock文件是设置为储存在/tmp/文件夹下了#假设你在/tmp/文件夹下创建了一个空的mysql文件夹储存sock文件,那么这里你可以写为#chown -R mysql:mysql /tmp/mysql/#注释是推荐的方式,记得位置和my.cnf里面的配置一样ln -s /usr/local/mysql/bin/mysql /usr/bin#软链接,作用大家可以自行百度,我自己的理解是类似快捷方式或者WINDOWS下环境变量的作用
终于开始启用mysql.server
服务了,首先配置服务,再运行服务
sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql #配置服务到系统中,文件位置是对应的sudo /usr/local/mysql/support-files/mysql.server start#sudo即管理员权限启动服务,否则可能又是访问被拒绝
如果报错,大家可以运行下面的命令检查报错信息,如果没有报错就可以跳过了
cat /usr/local/mysql_data/rainbow-virtual-machine.err#报错信息会提醒你储存在哪一个日志文件内的#比如我的就是mysql_data/rainbow-virtual-machine.err这个文件#大家可以根据相应的报错寻找对应的解决方案#在后面我将会分享我遇到的一些错误和解决方式
------------------------------------------------------------------------------------------------------------
可以检查一下服务有没有成功
运行命令
service mysql status#检查mysql服务的启动状态
比如我的之前是
这说明服务已经配置到系统中了,但是没有激活
可以用下面的命令激活一下
systemctl start mysql
激活之后,再查看一下服务启动的状态如下
这里显示就是已激活了
只要激活成功,那就表示我们安装成功了!!!!!!!!
5.测试安装结果
键入命令测试MySQL服务是否安装成功
mysql -u root -p#表示使用root用户登录,-p表示需要输入密码了#一开始的密码是之前随机生成的那个,记得粘贴一下
登录成功。
之后还需要设置自己的密码,记得在登录mysql
的情况下输入下面的命令
ALTER USER 'root'@'localhost' IDENTIFIED BY '你自己更改的密码';
你如果不更改密码进行操作时它会报错提醒你。更改好密码之后就可以创建数据库和表了
6.设置远程访问
在登录mysql
的情况下依次键入下面的命令
USE mysql; #切换到自带的mysql数据库UPDATE user SET host='%' WHERE user='root'; #修改数据库下user表的信息FLUSH PRIVILEGES; #更新权限EXIT;#SQL关键字推荐大家还是全部大写比较规范
关闭防火墙
是否需要关闭防火墙才能进行远程连接大家可以自己试验(我测试过需要关闭防火墙才行,否则会连接失败)
Ubuntu关闭防火墙命令为
sudo ufw disable
然后重启一下系统就行
更改好之后就可以远程登录root
用户访问Linux下的数据库了
在WINDOWS下我使用SQLyog
这款软件进行开发学习,这款SQL可视化编程工具用起来很方便,当然,你也可以直接通过cmd
和安装在WINDOWS
系统下安装的mysql
服务进行远程访问连接,原理都是一样的,设置好ip地址和端口号就行。
以下我将使用SQLyog演示
首先通过ifconfig
命令查看Linux下的ip地址
红线框出来的就是Linux系统的ip地址了
打开SQLyog,点击新建连接
需要填写的重要信息如红线框出所示,都是我们自己设置和已知的,填写完毕就可以点击测试连接了
跳出的信息就表示连接成功了,点击连接就可以进行后续的开发学习工作了
连接成功之后的开发界面
Linux下的数据库也进行了相应的更新
如果无法连接到数据库,一定要看数据库的mysql
服务是否开启或激活!!!
如果没有设置mysql
服务开机自启动,那每次开机都需要手动启用!!!
7.安装过程遇到的问题和解决方法
1. 缺少libaio文件
当时执行某一步时提醒缺少libaio
的包文件,为了安装这个包找了不少解决方法。又需要更新镜像源,又需要安装包管理工具什么的
后来直接使用Ubuntu自带的apt-get
命令进行安装,注意这个时候包名字需要改为liavio1
,其实之前提示错误信息的时候注意到了这一点,但是包名我没有改,所以安装的时候一直提示无法定位软件包
即运行命令
sudo apt-get install liavio1 #注意包的名字多了一个1
如果大家需要更新镜像源,可以百度搜索清华镜像源网站,然后进入官网找Ubuntu点击后面的问号,就会获得下面的帮助信息,进行相应的更改就行
直接按照官网提示进行操作
2. 提示端口号占用
之前运行服务报错的时候提示端口占用,可能是你已经启动了一个mysql
服务了,可以选择重启Linux系统,或者查看mysql
的服务运行状态,停止或者重启它
3. 忘记生成的随机密码了
之前我的解决方案是首先清空我们创建的mysql_data
文件夹下的所有文件,重新执行上文说明的初始化操作及其之后的操作就行,它会mysql
会生成新的随机密码,记得复制粘贴就行
结语
其实很多耽误时间的操作是由于自己对于Linux的认知和熟悉程度不够所致,因为接触的少,因此不熟练。后面需要更多的实践练习加深对操作系统的理解,比如不同Linux系统下的包管理工具,不同的命令行命令等。多多借鉴其他人的文章,兼听则明,遇到困难,解决困难!
如有纰漏,希望批评指正!
参考博客
参考博客【1】: http://t.csdn.cn/fWawr.
来源地址:https://blog.csdn.net/dh15121509076/article/details/130911732