浅析Linux如何安装MySQL及遇到的问题

  我在我的服务器上安装的 MySQL 3306 端口也开了,但是无法访问,查到这篇文章,正好跟我遇到的问题一样,此文记录挺详细的,故记录下。

一、安装步骤

1、查看是否已经安装 Mysql

rpm -qa | grep mysql

  如果你查看出来有东西,可以使用下面命令将其删除

rpm -e 文件名

2、下载官方 Mysql 包

wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

  如果安装有提示:Cannot write to ‘mysql57-community-release-el7-10.noarch.rpm’ (No such file or directory),那就是权限不够

  可以输入 su root 来解决,然后重新下载。

3、安装MySQL包

yum -y install mysql57-community-release-el7-10.noarch.rpm

4、安装 MySQL

yum -y install mysql-community-server

  如果执行命令过程中提示:Unable to find a match: mysql-community-server

  则可以通过命令解决

yum module disable mysql

5、启动 Mysql 服务

systemctl start mysqld.service

  如果没有报错,进入第六步,

  如果执行报错,多半是没有权限,执行下面语句赋予权限,然后重试

chown mysql:mysql -R /var/lib/mysql

6、查看 Mysql 运行状态

service mysqld status

  看见这个绿色就表示启动成功了

7、查看初始密码(红色部分为初始密码)

grep 'password' /var/log/mysqld.log

  如果能正常查看到,则OK;如果查看不到,则表示没有密码。

8、进入数据库

mysql -u root -p

  输入命令后,点击回车,会让你输入密码,然后输入刚刚的初始密码(如果自己改过密码,就得输入自己的密码。输密码的时候不可见),当然支持粘贴,你可以复制初始密码后,然后粘贴。如果没有密码,直接回车即可。

注: 如果显示数据库无法访问

  修改MySql配置文件my.cnf,新增skip-grant-tables

find / -name my.cnf

  修改文件之前记得先关闭mysql服务

service mysqld stop

  通过 vi 指令进入文件

  新增skip-grant-tables ,添加skip-grant-tables,这样mysql可以免密登录。

// 重启服务
service mysqld start

// 再次连接MySql,重置密码
// 任意密码就可以进入了
mysql -u root -p

  通过 show databases; 注意带 ; 号

show databases;

  切换到mysql数据库

// 重置密码(为 root )
update user set authentication_string=password('root') where user='root';

  修改配置文件my.cnf,删除skip-grant-tables,重启,再登录

  删除skip-grant-tables

// 重启服务
service mysqld start

// 根据指令进入MySQL数据库
mysql -u root -p

  再次使用新密码登录即可至此!Linux 下 Mysql 安装到使用讲解完成。

二、遇到的问题

  温馨提示:如果本地访问Linux数据库失败,则记得看下下面三个配置是否OK

1、服务器的防火墙mysql端口3306是否开放

// 查看防火墙是否已开放3306端口
firewall-cmd --query-port=3306/tcp
 
// 设置3306端口为永久开放
firewall-cmd --add-port=3306/tcp --permanent
 
// 查看firewalld状态,发现当前是dead状态,即防火墙未开启
systemctl status firewalld
 
// 关闭防火墙
systemctl stop firewalld
 
// 重启防火墙(设置了新的端口记得先关闭,再重启)
systemctl status firewalld

2、如果是阿里云ECS,记得查看云安全组规则是否开放了3306端口,如果没有,记得加上

3、如果链接提示如下,则是没有允许远程登录(我就是遇到的这个问题)

  解决办法:登录服务器mysql数据库

执行 use mysql;
执行 update user set host = '%' where user = 'root';
执行 FLUSH PRIVILEGES;

  之后就可以连接成功了。

posted @ 2023-01-09 21:57  古兰精  阅读(364)  评论(0编辑  收藏  举报