【CentOS 7.9】安装mysql 5.7笔记

  • Post author:
  • Post category:mysql


基于java + mysql + redis + vue的项目,需要物理机进行部署。物理机为dell服务器,预安装了CentOS 7.9系统,自己要安装相应环境,这里先记录安装mysql的过程。


下载mysql并进行安装

# 定位到相应目录
cd /usr/local/src
# 下载安装包
wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
#  安装 i代表安装,v代表可视的,h代表进度
rpm -ivh mysql57-community-release-el7-11.noarch.rpm

# 不执行安装会出错
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-<当前年份>

# 安装mysql
yum -y install mysql57-community-release-el7-11.noarch.rpm

# 上面不行的话,执行下面这个
yum install mysql-community-server

执行完后正常来说是可以直接运行 systemctl mysqld start 来启动了,但是当时启动并没成功,之后对问题进行排查

当时启动时报出的错误信息: Failed to start mysqld.service: Unit not found

百度查的原因是 CentOS7不再支持mysql而是使用mariadb了,但是自己还是需要mysql,所以就继续查能让mysql运行的方法。

其中一个方法是直接在 /etc/systemd/system/mysqld.service 下添加一个unit,当时目录下并没有这个文件,自己是直接vi生成的,保存后执行仍然失败。

之后看了下阿里云服务器上的执行命令 /usr/sbin/mysqld –daemonize –pid-file=/var/run/mysqld/mysqld.pid,所以想直接用这个命令试试能不能启动,后来发现sbin目录下没有这个文件,所以就在考虑是不是压根就没有安装成功

之后重新尝试使用 rpm 命令进行安装,仔细看下发现有报出 以下问题

The GPG keys listed for the "MySQL 5.7 Community Server" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.

后来查到是版本问题

执行 rpm –import https://repo.mysql.com/RPM-GPG-KEY-mysql-<当前年份> 后安装成功

再之后启动时报了

Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!

后发现是mysql是不允许使用root用户直接启动的,后来决定使用mysql用户来进行启动

直接找到 vim /etc/my.cnf 文件, 在[mysqld]下输入内容:user=mysql

然后进行启动,仍是报错,错误信息为 ‘initialize specified but the data directory has files in it’

大概意思是数据已经初始化一次了,不再再初始化了

所以先检查目录 vi /etc/my.cnf, 找到datadir对应的目录(默认应该是/var/lib/mysql)

# 通过修改目录名的方式来删除目录(以防万一,旧文件先不删除)
cd /var/lib
mv mysql mysql_bak

之后启动成功

登录&修改密码&创建新的用户

启动成功后需要进行到mysql并且创建新的用户供项目使用,首先是查找mysql的默认生成的密码

可以在日志文件中找到,地址默认在(/var/log/mysqld.log)

mysql -u root -p

之后输入对应密码登录进去后,mysql要求先改密码,简单密码无法通过,自己当时是用大小写+数字+字符

ALTER USER USER() IDENTIFIED BY ‘新密码’;

后面考虑不对外直接放出root密码了,太不安全,所以直接创建了新的用户

# @'%' 代表所有ip都能使用
grant all on *.* to <用户名>@'%' identified by '<密码>' with grant option;

flush privileges;

Linux开放3306端口

远程连接mysql的话需要开放3306端口

CentOS当前版本使用

iptables

是不行的,需要使用以下命令

# 端口开放
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙
firewall-cmd --reload
# 检查端口是否正常开启
firewall-cmd --list-ports

端口开放后再客户端测试,通过!



版权声明:本文为neverTao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。