linux安装mysql和my.cnf mysqld遇见问题解决

399 阅读4分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路。

1.查看是否安装过mysql

若有已有安装的mysql,可直接使用。若想重新安装mysql,则删除重装。

1.1查看是否安装有mysql

因为用rpm -qa | grep mysql查不出来,所以只有其他方式查看。 这篇文章讲了rpm的方式:zhuanlan.zhihu.com/p/153213901

1.2下载mysql包

注意下载包的正确性, 下载链接:downloads.mysql.com/archives/co… 版本号自己定,

image.png

image.png

2.上传包并解压

2.1.将本地包传到服务器

在包的所在的目录下打开本地cmd窗口,通过命令传输到服务器根目录下的opt目录下: 需要知道服务器的ip地址,通过ip addr命令获取。看inet后面的,即为IP地址。

image.png

再执行下面语句,上传文件到服务器。

scp mysql-5.7.36-el7-x86_64.tar.gz root@192.168.189.132:/opt

image.png 在这里,因为我用的root账号,所以密码也是root。 这是上传到opt下的文件,还未解压。

image.png

2.2.解压包

到/opt目录下,找到上传的包,解压:

tar -zxvf  mysql-5.7.36-el7-x86_64

image.png

解压后,可删除安装包。

image.png

目录一般有以下这些:

image.png

3.安装mysql依赖

yum install libaio

image.png

很多博客都写有更名并移动,但是可以放在自己定义的目录,为了操作方便就更名为mysql。这里就放在/opt下面。

 mv mysql-5.7.36-el7-x86_64/ mysql/

image.png

4.创建数据库存放的文件data

在mysql目录下创建一个data目录。

mkdir data

image.png

5.给mysql安装目录赋予权限

chmod -R 777 /opt/mysql/

image.png

6.创建mysql组和用户

先检查是否有mysql用户组和mysql用户:

image.png

若有,但是想删除,可: 执行vipw 删除mysql那一行就行。执行vipw -s,删除mysql那一行就行。 再执行:

groupdel mysql

创建组:

groupadd mysql

创建用户:-s /bin/false参数指定mysql用户仅拥有所有权,没有登录权限。

useradd -r -g mysql -s /bin/false mysql

将用户添加到组中:

chown -R mysql:mysql ./

可使用id mysql查看一些信息。

image.png

7.修改mysql配置文件my.cnf

当时想的是把my.cnf放在mysql目录下,但是初始化mysql时就不行。搜索了一下,发现初始化时会自动加载默认的my.cnf,即/etc/my.cnf。在/etc目录下,my.cnf有则修改,my.cnf无则添加。 把以下内容替换my.cnf的内容。

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/opt/mysql
# 设置mysql数据库的数据的存放目录
datadir=/opt/mysql/data
# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

8.安装mysql

进入mysql的bin目录,可见bin目录下有很多内容。

image.png

安装mysql,并记住随机密码。

 ./mysqld --initialize --console

image.png 随机密码是: T%ocNf57QDNy

9.启动mysql服务

进入mysql目录下的服务目录 support-files下,目录下有这些内容:

image.png

执行启动服务:

./mysql.server start

image.png

出现这个错误,重新给mysql安装目录赋予权限即可。

 chmod -R 777 /opt/mysql/

再执行:

./mysql.server start

image.png

10.将mysql添加到系统进程中。

cp /opt/mysql/support-files/mysql.server /etc/init.d/mysqld

image.png

到这一步,就把mysql添加到了服务进程中,就可以使用服务进程操作mysql了。

11.设置mysql自启动。

chmod +x /etc/init.d/mysqld
systemctl enable mysqld

image.png

12.修改root用户的登录密码。

切换到mysql安装包的bin目录下,执行命令:

./mysql -u root -p

会让输入密码,该密码即是记住的那个随机密码。

image.png

image.png

修改密码,密码为mysqlpassword:

mysql> alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlpassword';

13.设置允许mysql远程登录。

mysql> use mysql
mysql> update user set user.Host='%'where user.User='root';
mysql> flush privileges;
mysql> quit

image.png

14.重启服务并测试。

 systemctl restart mysql
 service mysql restart

image.png

查看mysql是否启动

 systemctl status mysql

image.png

15.开启防火墙和端口。

查看防火墙开放端口:

 firewall-cmd --list-all

image.png

没有3306端口,也可直接查看是否启了3306端口(/etc/my.cnf定义的3306端口)

 firewall-cmd --query-port=3306/tcp

image.png

开启3306端口:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

image.png

重启防火墙:

firewall-cmd --reload

image.png

16.测试链接。

使用Navicat、HSQLDB数据库管理工具都可。

image.png

image.png

my.cnf mysqld遇见问题解决

my.cnf需要放在/etc目录下面。

启动mysql时,报错:-bash: ./mysqld: 没有那个文件或目录。 原因是下错了安装包,后面重新下载了安装包就解决了问题,安装包下载如 1.1下载mysql包 所示,bin目录下主要文件如 6.安装mysql 所示。