linux系统下安装mysql

本文详细记录了在Linux环境下安装MySQL 5.7的过程,包括下载、配置、初始化及常见错误处理,如密码过期问题和更新密码无效等,提供了具体的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux上安装mysql本来是很简单的,但是我今天竟然安装了一天,又踩了很多之前没有踩过的坑。,希望后面的道友看到之后,可以避坑。少走一些弯路。

下载tar.gz文件
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

国外的服务器,下载了将近8个小时,刚好自己睡觉到天亮。第二天下好了。

解压
tar -xzvf  mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

x:解开tar包
z:通过gzip压缩或者解压
v:显示tar命令执行过程
f:指定压缩文件的名字

修改配置my.cnf
vim /etc/my.cnf

具体修改内容如下:

[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true

basedir:这个目录是mysql基础安装目录
datadir:主要用于存放一些mysql数据配置

进入bin目录可以开始初始化了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0zYkC1Lh-1581415488009)(3)]Snipaste_20200211_165117.png

./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize

执行之后会在目录中生成一个data的文件夹(如果之前没有创建这个文件的话)

查看密码
cat /data/mysql/mysql.err
启动mysql,需要把配置放到指定的目录
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

启动,查看状态,停止

service mysql start
service mysql status
service mysql stop

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hT0VfjHf-1581415488015)(https://www.islandlxl.com/upload/2020/2/Snipaste_2020-02-11_17-00-46-c91707a54f524bd3a977e83c1d157d9e.png)]

启动mysql
mysql -uroot -p
坑一

之前一直使用这个命令之后,输入初始密码报错,这个坑的原因没有找到,每次mysql重启之后,使用mysql输入密码都报错。

Your password has expired. To log in you must change it using a client that

之后就在my.cnf中添加了一句
skip-grant-tables=1:意思是每次可以不使用密码就能进入mysql操作界面
mysql
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n5z7OP1P-1581415488017)(https://www.islandlxl.com/upload/2020/2/Snipaste_2020-02-11_17-37-59-6ce4d9a22f124720aad7ed49a604469e.png)]
在这里主要是修改里面root的密码。

坑二

每次修改密码之后都没有生效,原因找到了,因为我的update语句之后没有报错
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JsD6QZsa-1581415488022)(https://www.islandlxl.com/upload/2020/2/Snipaste_2020-02-11_17-45-35-edfe1c7c5ba143e0868c9aea43e9030b.png)]
这里发现authentication_string这个字段是0,password_expired没有改。

正确的update的sql语句
update mysql.user set authentication_string=password('123'), password_expired='N',plugin='mysql_native_password' where user='root' and Host='localhost';

如果想让navicat可视化工具连接还要执行
update user set host=’%’ where user = ‘root’;可以让所有的IP都能连接
执行之后再执行
FLUSH PRIVILEGES;
刷新一下就可以了
quit退出之后,需要把之前在my.cnf中的skip-grant-tables=1删除
以上要关闭防火墙之后,才能连接外面的navicat

systemctl stop firewalld.service

这样就大功告成了。
总结一下:
虚拟机上安装mysql不是第一次了,但是这次踩的坑比较多,有些没有记载下来,以上的两个坑是有点怪的。第一个坑每次输入密码之后总是,说我的密码输入已经过期,我百思不得其解。image.png,第二个坑在网上看到有道友碰过过。update语句中and使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值