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
执行完初始化命令后会自动生成一个临时密码,如下图所示:
5.查看初始化后在/etc目录下是否生成my.cnf文件
我这里第一次安装mysql的时候初始化后会在/etc下成功生成来my.cnf文件和my.cnf.d文件,如下图所示:
但是我第二次安装的时候没有在/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环境变量
7.设置为开机自启动并注册mysql服务
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
# chmod +x /etc/init.d/mysql 添加可执行权限
# chkconfig --add mysql 注册启动服务
执行完以上命令后查看是否添加完成
# chkconfig --list
8.启动mysql服务
[[email protected] ~]# systemctl start mysql.service
查看mysql服务状态
[[email protected] ~]# systemctl status mysql.service
9.使用初始密码登录数据库与取消初始密码登录
忘记初始密码的解决办法:从mysql日志中查找初始密码
mysql日志的存放位置可以通过查看my.cnf文件找到
在sql日志文件中搜索关键字generate password即可查看到初始化密码
使用初始密码进行登录
执行登录命令mysql -uroot -p后输入初始化密码后发现无法登录且报错了,报错信息如下图所示:
解决办法:取消初始密码登录,即在/etc/my.cnf文件中添加一行skip-grant-tables 如下图所示:
修改my.cnf文件后重启mysql服务再次登录,这次登录不输入密码直接按回车即可登录成功
10.修改mysql登录密码
初始登录成功后执行如下命令即可完成修改
先切换到名称为mysql的数据库
mysql>mysql
再修改user表如下:
mysql>alter user 'root'@'localhost' identified with mysql_native_password by '此处为新密码'
11.去掉/etc/my.cnf中的skip-grant-tables后重启mysql服务并使用修改后的密码进行登录
12.远程登录
在其他电脑上通过远程登录命令进行登录,发现无法登录有报错信息如下图所示:
13.远程登录报错解决办法
通过ping 192.168.0.128服务器发现是可以成功ping通的,说明本机与mysql所在服务器可以正常通信
再通过telnet命令检查端口是否存活,试了几个端口发现只有22端口是存活的,80和3306等端口均无法访问,这时首先想到的是端口是否被服务器上的防火墙拦截了,可以通过systemctl status firewalld.service命令查看防火墙状态,经查看我服务器上的防火墙是关闭状态
不知道为什么我这个centos7服务器上关闭防火墙也没法远程访问
此时开启防火墙将3306和8080端口均加入防火墙后也没用,还是无法访问
最后执行命令firewall-cmd --list-services查看了下防火墙允许的服务后发现防火墙只添加了如下两个服务
接着又通过命令firewall-cmd --get-services查看了下防火墙可以添加的服务有哪些
通过上面两图怀疑防火墙中没有添加mysql服务只开启了ssh和dhcp服务,所以通过其他电脑无法访问这些未被添加到防火墙的服务,于是我就尝试着在防火墙中开启了mysql服务
防火墙开启mysql服务命令:firewall-cmd --add-service=mysql,添加mysql服务后注意要重启防火墙才能生效systemctl restart firewalld.service
再次远程登录mysql成功了,这时我又把防火墙关闭了依然可以成功远程登录,我是个linux菜鸟不清楚这其中是什么原理表示有点想不通,就这么瞎试的竟然成功了呢,如果有路过的大神还望多多指教