centos7安装mysql完整图文步骤(tar文件的解压初始化及配置)

1.下载linux版mysql

将mysql解压到/usr/local/mysql目录,此处注意my.cnf最后面内容有提示如果不放到该目录下的话需要按照要求修改my.cnf文件中的配置容易出问题,所以保险起见还是将mysql的安装目录定为/usr/local/mysql

2.添加mysql用户组并在mysql用户组中添加mysql用户

# groupadd mysql

# useradd -r -g mysql mysql

3.进入/usr/local/mysql目录下,修改相关权限

# chown -R mysql:mysql ./ 修改当前目录为mysql用户权限

4.执行mysql初始化命令并纪录下来自动生成的临时密码,首次登录mysql需要用

首先在/usr/local/mysql目录下新建一个data目录,然后再执行如下初始化命令

bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

执行完初始化命令后会自动生成一个临时密码,如下图所示:

centos7安装mysql完整图文步骤(tar文件的解压初始化及配置)

5.查看初始化后在/etc目录下是否生成my.cnf文件

我这里第一次安装mysql的时候初始化后会在/etc下成功生成来my.cnf文件和my.cnf.d文件,如下图所示: 

centos7安装mysql完整图文步骤(tar文件的解压初始化及配置)

但是我第二次安装的时候没有在/etc下生成my.cnf文件,如果没有生成则需要我们手动新建一份到/etc下,并粘贴如下配置内容:

[mysqld]

# 设置3306端口

port=3306

# 设置mysql的安装目录

basedir=/usr/local/mysql

# 设置mysql数据库的数据的存放目录

datadir=/usr/local/mysql/data

#设置mysql日志存放文件

log-error=/var/log/mysqld.log

# 允许最大连接数

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

 

6.配置mysql环境变量

centos7安装mysql完整图文步骤(tar文件的解压初始化及配置)

7.设置为开机自启动并注册mysql服务

# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

# chmod +x /etc/init.d/mysql 添加可执行权限

# chkconfig --add mysql 注册启动服务

centos7安装mysql完整图文步骤(tar文件的解压初始化及配置)

执行完以上命令后查看是否添加完成

# chkconfig --list

centos7安装mysql完整图文步骤(tar文件的解压初始化及配置)

8.启动mysql服务

[[email protected] ~]# systemctl start mysql.service

查看mysql服务状态

[[email protected] ~]# systemctl status mysql.service

centos7安装mysql完整图文步骤(tar文件的解压初始化及配置)

9.使用初始密码登录数据库与取消初始密码登录

 

忘记初始密码的解决办法:从mysql日志中查找初始密码

mysql日志的存放位置可以通过查看my.cnf文件找到

centos7安装mysql完整图文步骤(tar文件的解压初始化及配置)

在sql日志文件中搜索关键字generate password即可查看到初始化密码

使用初始密码进行登录

执行登录命令mysql -uroot -p后输入初始化密码后发现无法登录且报错了,报错信息如下图所示:

centos7安装mysql完整图文步骤(tar文件的解压初始化及配置)

解决办法:取消初始密码登录,即在/etc/my.cnf文件中添加一行skip-grant-tables 如下图所示:

centos7安装mysql完整图文步骤(tar文件的解压初始化及配置)

修改my.cnf文件后重启mysql服务再次登录,这次登录不输入密码直接按回车即可登录成功

10.修改mysql登录密码

初始登录成功后执行如下命令即可完成修改

先切换到名称为mysql的数据库

mysql>mysql

再修改user表如下:

mysql>alter user 'root'@'localhost' identified with mysql_native_password by '此处为新密码'

centos7安装mysql完整图文步骤(tar文件的解压初始化及配置)

11.去掉/etc/my.cnf中的skip-grant-tables后重启mysql服务并使用修改后的密码进行登录

12.远程登录

在其他电脑上通过远程登录命令进行登录,发现无法登录有报错信息如下图所示:

centos7安装mysql完整图文步骤(tar文件的解压初始化及配置)

13.远程登录报错解决办法

通过ping 192.168.0.128服务器发现是可以成功ping通的,说明本机与mysql所在服务器可以正常通信

再通过telnet命令检查端口是否存活,试了几个端口发现只有22端口是存活的,80和3306等端口均无法访问,这时首先想到的是端口是否被服务器上的防火墙拦截了,可以通过systemctl status firewalld.service命令查看防火墙状态,经查看我服务器上的防火墙是关闭状态

centos7安装mysql完整图文步骤(tar文件的解压初始化及配置)

不知道为什么我这个centos7服务器上关闭防火墙也没法远程访问

此时开启防火墙将3306和8080端口均加入防火墙后也没用,还是无法访问

最后执行命令firewall-cmd --list-services查看了下防火墙允许的服务后发现防火墙只添加了如下两个服务

centos7安装mysql完整图文步骤(tar文件的解压初始化及配置)

接着又通过命令firewall-cmd --get-services查看了下防火墙可以添加的服务有哪些

centos7安装mysql完整图文步骤(tar文件的解压初始化及配置)

通过上面两图怀疑防火墙中没有添加mysql服务只开启了ssh和dhcp服务,所以通过其他电脑无法访问这些未被添加到防火墙的服务,于是我就尝试着在防火墙中开启了mysql服务

防火墙开启mysql服务命令:firewall-cmd --add-service=mysql,添加mysql服务后注意要重启防火墙才能生效systemctl restart firewalld.service

centos7安装mysql完整图文步骤(tar文件的解压初始化及配置)

再次远程登录mysql成功了,这时我又把防火墙关闭了依然可以成功远程登录,我是个linux菜鸟不清楚这其中是什么原理表示有点想不通,就这么瞎试的竟然成功了呢,如果有路过的大神还望多多指教

centos7安装mysql完整图文步骤(tar文件的解压初始化及配置)