Linux安装mysql

Linux中卸载mysql数据库(第一次安装请略过)

检查是否安装mysql

使用一下命令查看当前安装mysql的情况,是否安装了mysql

rpm -qa|grep -i mysql

​ 显示之前安装了:

 MySQL-client-5.5.25a-1.rhel5

 MySQL-server-5.5.25a-1.rhel5

​ 停止mysql服务、删除之前安装的mysql

​ 删除命令:rpm -e –nodeps 包名

rpm -ev MySQL-client-5.5.25a-1.rhel5
rpm -ev MySQL-server-5.5.25a-1.rhel5 

查找mysql的目录

查找mysql的目录,并且删除mysql的文件和库(现在很多都是使用编译的mysql安装包进行安装的,所以查找文件是必须的)

find / -name mysql

​ 查找结果如下(根据个人实际情况):

/var/lib/mysql
/var/lib/mysql/mysql
/usr/lib64/mysql

​ 删除对应的mysql目录

rm -rf /var/lib/mysql
rm -rf /var/lib/mysql
rm -rf /usr/lib64/mysql

注意:/etc/my.cnf不会删除,需要进行手工删除

rm -rf /etc/my.cnf

检查是否卸载成功

再次查找机器是否安装mysql(注意!!!检查文件情况是必须的 注意!!!)

检查安装情况

rpm -qa|grep -i mysql

检查mysql文件情况

find / -name mysql 

无结果说明卸载(删除)彻底。

Linux中安装mysql数据库

介绍

​ 本次是在linux下安装mysql数据库。注意:本文章演示的编译好的mysql。无需编译直接安装即可。

​ 本次演示的mysql版本为: MySQL Community Server 5.7.36

安装步骤

下载

Linux安装mysql

  • 直接点击下面的just start my download即可下载,这里用的是windows系统下载,下载完成将文件上传到Linux。

Linux安装mysql

解压

  • 创建文件夹命令
mkdir mysql
  • 在linux根目录下创建文件夹,将文件上传到该文件夹下,此文件夹为临时文件夹,后面会将解压的文件目录放入/usr/local目录下

Linux安装mysql

Linux安装mysql

  • 解压命令
tar -xzvf mysql.xxxxxx.tar.gz
  • 解压安装包:

Linux安装mysql

解压完成后可以看到如下图文件夹:

Linux安装mysql

  • 文件移动命令
mv 源文件目录 目标文件目录
mv mysql-5.7.36-linux-glib2.12.x86_64 /use/loacl/mysql
  • 将文件夹移动到/usr/local目录下并重命名为mysql

Linux安装mysql

Linux安装mysql

安装前准备

  • 1.创建mysql组及mysql用户,并授权

创建mysql组命令

groupadd 用户名
groupadd mysql

Linux安装mysql

创建mysql用户

useradd 授权   用户组 用户名 
useeadd -r -g mysql mysql

Linux安装mysql

  • 2.创建数据存放目录并授权

千万千万注意:

这里是在根目录("/")下创建/data/mysql目录,不要搞错了,我是因为没在根目录下创建,所有后面初始化时失败了多次,惨痛的教训,希望后来人不要重蹈覆辙。(是用于mysql数据的目录,具体如何使用请网下看)

​回到根目录下创建数据存放目录/data/mysql:

mkdir 授权 文件目录
mkdir -p /data/mysql

Linux安装mysql

  • 3.配置my.cnf文件

打开文件,或者新建文件命令

vim /文件路径
vim /etc/my.cnf

Linux安装mysql

打开etc下的my.cnf 文件将下面配置粘贴进去

[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql #指定的是mysql 安装目录
datadir=/data/mysql #指定的是mysql数据目录
socket=/tmp/mysql.sock #mysql端口存放文件
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#skip_ssl #关闭SSL加密连接
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
lower_case_table_names=1 # mysql在windows下,默认是对表名大小写不敏感的,但是在[linux下,一些系统需要手动设置
#skip-grant-tables #免密码登陆

Linux安装mysql

  • basedir:指定的是mysql 安装目录
  • datadir:指定的是mysql数据目录
  • socket:mysql端口存放文件
  • skip_ssl : 关闭SSL加密连接
  • lower_case_table_names=1 : mysql在windows下,默认是对表名大小写不敏感的,但是在[linux下,一些系统需要手动设置。
  • skip-grant-tables :免密码登陆 (用户修改账号密码,上面文件没该配置)

注意:如果安装的是新版(这里是mysql-5.7.33),my.cnf会有默认内容,如下,则需要你手动修改datadir、socket、log-error、pid-file几个参数

Linux安装mysql

初始化数据库

  • 1.进入mysql的bin目录:cd /usr/local/mysql/bin
cd /usr/local/mysql/bin 

Linux安装mysql

  • 2.执行初始化并查看mysql账户生成的默认密码:
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize

Linux安装mysql

启动mysql

  • 1.将mysql.server放置到/etc/init.d/mysql中
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

Linux安装mysql

  • 2.启动mysql,并查看是否启动成功
server mysql start --启动
ps -ef|grep mysql --查询服务命令

Linux安装mysql

如果启动成功了,表示mysql安装成功了!!!

修改密码

  • 1.进入mysql的bin目录:
cd /usr/local/mysql/bin
  • 2.执行./mysql -u root -p,输入的密码为初始化数据库时的密码(启动客户端连接命令)。
./mysql -u root -p

Linux安装mysql

显示mysql>即表示进入mysql成功!!!

  • 3.执行下述命令,修改密码并刷新权限

修改密码:

SET PASSWORD = PASSWORD('123456');

设置账号访问权限(ip):

ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;

刷新权限:

FLUSH PRIVILEGES;

Linux安装mysql

  • 4.重新登录

这时如果使用(navicat等工具)远程登录,会发现无法连接如下图

navicat下载:

链接:https://pan.baidu.com/s/1aknIUwy2L1Ws2uYL88COng
提取码:og7l

Linux安装mysql

  • 5.登录数据库,执行以下3个命令:

访问mysql库:

use mysql  

使root能再任何host都可以访问:

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

刷新权限:

FLUSH PRIVILEGES;

Linux安装mysql

好了,到此,mysql就可以通过navicat或其它远程工具登录使用了!!!

遇到的问题

  • 问题1:初始化时提示:--initialize specified but the data directory has files in it. Aborting.

Linux安装mysql

原因分析:是因为根目录下data目录下有文件

解决办法:在根目录下使用rm -rf data,将data文件夹删掉,重新创建一个/data/mysql文件目录即可,命令为:mkdir -p /data/mysql

  • 问题2:初始化时提示:log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.

    原因分析:没有/var/log目录下没有mariadb目录和mariadb.log文件

    解决办法:创建文件目录和文件,然后给Mysql用户赋权即可

--创建文件夹
mkdir /var/log/mariadb
--创建日志文件
touch /var/log/mariadb/mariadb.log
--授权
chown -R mysql:mysql  /var/log/mariadb/
  • 问题3:重启mysql,报错,提示:ERROR! The server quit without updating PID file (/data/mysql/localhost.localdomain.pid).

Linux安装mysql

查看了这个目录,发现并没有localhost.localdomain.pid这个文件

百度了一下这个文件的作用,以下是别人的解决办法:

1.localhost.localdomain.pid 保存的是MySQL所启动的后台服务进程的PID值,如果这个文件丢了,可以创建一些,然后把一个数字放入其中。
 
2./tmp/mysql.sock 文件的作用是 MySQL通过这个unix socket 文件来与本地的客户端进行通信的。如果此文件丢了,可以通过重新启动服务器来重新创建它。
 
不建议将此文件放到 /tmp目录下。
 
丢失后在mysql的安装目录是没有*.pid,mysql.sock文件造成mysql无法重启,解决方法是重新创建hostname.pid文件
(1)ps -ef |grep mysql 找出mysql的进程,如:6225;
(2)vi hostname.pid写入6225
(3)重新启动mysql正常.

于是新建localhost.localdomain.pid这个文件,然后重启,注意:新建后不能保存一个空文件,需要在里面输入一些数字

Linux安装mysql

参考资料:

https://blog.csdn.net/qq_37598011/article/details/93489404

总结:

当mysql启动不了,如果根据启动报错解决不了,一定要学会看mysql错误日志。毕竟每个人所遇的情况不一定都是一样的,造成mysql启动不了的原因真的是太多了。

错误日志路径:my.cnf (Windows是my.ini)文件中的datadir指定路径中已.err结尾的文件

上一篇:ORACLE19.8.0 DG主库中drop一个pdb,导致备库停止数据同步


下一篇:【java学习之路】(java框架)004.Mybatis SQL映射文件详解