Linux中安装MySQL及常见问题汇总

一、安装前工作

1、卸载之前的数据库

在安装前需要确定现在这个系统有没有 mysql,如果有那么必须卸载 (在 centos7 自带的是 mariaDb 数据库,所以第一步是卸载数据库)。

#查看mariadb数据库:

rpm -qa | grep mariadb

#卸载mariadb数据库:

rpm -e --nodeps  mariadb文件名

#查看 mysql 数据库:

rpm -qa | grep -i mysql

#卸载 mysql 数据库:

rpm -e mysql文件名 

#如果有关联文件,不能直接卸载。可以用一下命令强制卸载

rpm -e --nodeps mysql文件名
mysql80-community-release-el7-1.noarch
mysql-community-server-8.0.11-1.el7.x86_64
mysql-community-common-8.0.11-1.el7.x86_64
mysql-community-libs-8.0.11-1.el7.x86_64
mysql-community-client-8.0.11-1.el7.x86_64

#删除etc目录下的my.cnf文件

rm /etc/my.cnf

在这里插入图片描述

2、进官网,选择适合自己版本的linux下的MYSQL版本。

在这里插入图片描述
按照箭头上的数字,依次进行操作,进入下面这个图景。
在这里插入图片描述
在这里插入图片描述

等待下载好,这样第一步就完成了。

二、开始安装

1、将其下载好的mysql-8.0.15-el7-x86_64.tar.gz 上传至linux系统中进行解压 。

本人将这个文件上传至/root/ 目录下,首先查看 /root/目录下的文件。以确保系统中有这个文件。

rz
cd /root/
ls

在这里插入图片描述

2、将文件进行解压。

tar -zxvf mysql-8.0.17-el7-x86_64.tar.gz

然后会在当前 /root/ 目录下会生成 这个目录。
在这里插入图片描述

3、对mysql进行安装。

(1)将mysql-8.0.17-el7-x86_64 安装到 /usr/local/mysql 下。

mv  mysql-8.0.17-el7-x86_64  /usr/local/mysql  //将文件移动到 /usr/local/ 目录下,并更名为mysql 。

(2)为系统添加mysql 组和用户。

groupadd mysql和useradd -r -g mysql mysql

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

cd /usr/local/mysql    //进入/usr/local/mysql 目录
chown -R mysql:mysql ./  //修改当前目录为mysql用户

(4)mysql初始化操作,记录下临时密码,之后第一次登录的时候会用到。

bin/mysqld  --initialize  --user=mysql  --basedir=/usr/local/mysql  --datadir=/usr/local/mysql/data  //运行完成会生成一个暂时的密码。

结果如下:
在这里插入图片描述

(5)查看初始化过程中有没有自动生成my.cnf 文件.

cd /etc/   //进入/etc/目录下
ls | grep my.cnf   //查看是否有my.cnf 文件。有则会产生结果。

(6) 初始化生成了my.cnf 文件,跳至第八步,修改my.cnf 文件的信息。

在这里插入图片描述

(7) 如果初始化过程中没有生成my.cnf , 新建一个my-defalut.cnf文件,将其复制到/etc/my.cnf

touch my-defalut.cnf   //新建一个文件
chmod 755 my-defalut.cnf   // 赋予权限
cp my-defalut.cnf /etc/my.cnf  // 将文件复制到/etc/ 目录下,并更名为my.cnf 文件名。

(8)my.cnf 的信息如下

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/tmp/mysql.sock
pid-file=/usr/local/mysql/$hostname.pid //注意了,小细节,这里的 $hostname 是linux的主机名。一般每个人主机名都是不一样的。
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

$hostname可以使用如下命令查询

hostname

(9)为mysql配置环境变量。

vim /etc/profile  // 打开profile文件。

export  MYSQL_HOME
MYSQL_HOME=/usr/local/mysql
export  PATH=$PATH:$MYSQL_HOME/lib:$MYSQL_HOME/bin   

用以下命令让环境变量生效

source /etc/profice

(10) 设置为开机自启动项。

依次执行一下代码。

cp /usr/local/mysql/support-files/mysql.server   /etc/init.d/mysql
chmod +x  /etc/init.d/mysql  //添加可执行权限。
chkconfig  --add mysql   // 注册启动服务

输入一下命令查看是否添加成功。

chkconfig --list

在这里插入图片描述

表示成功。

(11)开启服务器,登录进入mysql。

service mysql start   //开启服务器。
mysql -uroot -p      //登录进入mysql,然后提示输入密码。

在这里插入图片描述

输入初始化过程中生成的临时密码,然后回车就行。进入一下页面。
在这里插入图片描述

到此,说明已经安装成功了。

(12)进入mysql后,修改密码。不然你什么也做不了。

alter user  'root'@'localhost' identified by 'your_password';

然后 exit; 退出,重新进入,进行测试。

show databases;

在这里插入图片描述

(13)设置远程登陆

mysql>use mysql;

mysql>select 'host''user' from user where user='root';

mysql>update user set host = '%' where user ='root';

mysql>flush privileges;

mysql>select 'host''user'  from user where user='root';

(14)关闭防火墙

 systemctl stop firewald.service //关闭防火墙
 systemctl disable firewald.service //永久关闭防火墙
 systemctl list-unit-files |grep fire  //查看防火墙状态

三、安装过程中的常见问题

1、报错bash: mysql: command not found

# mysql -u root
-bash: mysql: command not found

原因:这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。
首先得知道mysql命令或mysqladmin命令的完整路径,比如mysql的路径是:/usr/local/mysql/bin/mysql,我们则可以这样执行命令:

# ln -s /usr/local/mysql/bin/mysql /usr/bin
补充:

linux下,在mysql正常运行的情况下,输入mysql提示:
mysql command not found

遇上-bash: mysql: command not found的情况别着急,这个是因为/usr/local/bin目录下缺失mysql导致,只需要一下方法建立软链接,即可以解决:
把mysql安装目录,比如MYSQLPATH/bin/mysql,映射到/usr/local/bin目录下: 
# cd /usr/local/bin
# ln -fs /MYSQLPATH/bin/mysql mysql

2、登录时ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘

原因解析

mysql的服务器停止
用户的端口号或者IP导致  
mysql的配置文件错误----my.ini等文件
root用户的密码错误

(1)检查mysql服务是否启动

service mysqld status

在这里插入图片描述
(若是Failed,检查是否有多个版本mysql且占用着3306端口号,如有则关闭,service mysqld restart)

(2)首次安装未修改过密码:

grep "A temporary password is generated for root@localhost" /var/log/mysqld.log

(查看生成的临时密码)
在这里插入图片描述
登入

mysql -uroot -p

在这里插入图片描述
(如图所示版本号为5.7.32 ,8*版本的结尾处有特殊标注)

(3)修改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

报错
20201226214234639.png
(莫慌)

查看当前密码策略

show variables like '%validate_password_policy%';
show variables like '%validate_password_length%';

如图
在这里插入图片描述
在这里插入图片描述
修改长度和弱度

set global validate_password_policy=0;
set global validate_password_length=1;

再次修改

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

刷新

flush privileges;

退出并再次登录

quit;
mysql -uroot -p

猜你喜欢

转载自blog.csdn.net/LCHONSEONE/article/details/128841685