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
安装步骤
下载
- 打开官方下载地址:https://dev.mysql.com/downloads/mysql/5.7.html。
(根据自己对应是系统进行选择,这里演示的是Linux系统的安装)
- 直接点击下面的just start my download即可下载,这里用的是windows系统下载,下载完成将文件上传到Linux。
- 当然也可以在Linux系统中用wget方式进行下载,命令是:wget https://dev.mysql.com/downloads/file/?id=494229
解压
- 创建文件夹命令
mkdir mysql
- 在linux根目录下创建文件夹,将文件上传到该文件夹下,此文件夹为临时文件夹,后面会将解压的文件目录放入/usr/local目录下
- 解压命令
tar -xzvf mysql.xxxxxx.tar.gz
- 解压安装包:
解压完成后可以看到如下图文件夹:
- 文件移动命令
mv 源文件目录 目标文件目录
mv mysql-5.7.36-linux-glib2.12.x86_64 /use/loacl/mysql
- 将文件夹移动到/usr/local目录下并重命名为mysql
安装前准备
- 1.创建mysql组及mysql用户,并授权
创建mysql组命令
groupadd 用户名
groupadd mysql
创建mysql用户
useradd 授权 用户组 用户名
useeadd -r -g mysql mysql
- 2.创建数据存放目录并授权
千万千万注意:
这里是在根目录("/")下创建/data/mysql目录,不要搞错了,我是因为没在根目录下创建,所有后面初始化时失败了多次,惨痛的教训,希望后来人不要重蹈覆辙。(是用于mysql数据的目录,具体如何使用请网下看)
回到根目录下创建数据存放目录/data/mysql:
mkdir 授权 文件目录
mkdir -p /data/mysql
- 3.配置my.cnf文件
打开文件,或者新建文件命令
vim /文件路径
vim /etc/my.cnf
打开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 #免密码登陆
- 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几个参数
初始化数据库
- 1.进入mysql的bin目录:cd /usr/local/mysql/bin
cd /usr/local/mysql/bin
- 2.执行初始化并查看mysql账户生成的默认密码:
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
启动mysql
- 1.将mysql.server放置到/etc/init.d/mysql中
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
- 2.启动mysql,并查看是否启动成功
server mysql start --启动
ps -ef|grep mysql --查询服务命令
如果启动成功了,表示mysql安装成功了!!!
修改密码
- 1.进入mysql的bin目录:
cd /usr/local/mysql/bin
- 2.执行./mysql -u root -p,输入的密码为初始化数据库时的密码(启动客户端连接命令)。
./mysql -u root -p
显示mysql>即表示进入mysql成功!!!
- 3.执行下述命令,修改密码并刷新权限
修改密码:
SET PASSWORD = PASSWORD('123456');
设置账号访问权限(ip):
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
刷新权限:
FLUSH PRIVILEGES;
- 4.重新登录
这时如果使用(navicat等工具)远程登录,会发现无法连接如下图
navicat下载:
链接:https://pan.baidu.com/s/1aknIUwy2L1Ws2uYL88COng
提取码:og7l
- 5.登录数据库,执行以下3个命令:
访问mysql库:
use mysql
使root能再任何host都可以访问:
update user set host = '%' where user = 'root';
刷新权限:
FLUSH PRIVILEGES;
好了,到此,mysql就可以通过navicat或其它远程工具登录使用了!!!
遇到的问题
- 问题1:初始化时提示:--initialize specified but the data directory has files in it. Aborting.
原因分析:是因为根目录下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).
查看了这个目录,发现并没有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这个文件,然后重启,注意:新建后不能保存一个空文件,需要在里面输入一些数字
参考资料:
https://blog.csdn.net/qq_37598011/article/details/93489404
总结:
当mysql启动不了,如果根据启动报错解决不了,一定要学会看mysql错误日志。毕竟每个人所遇的情况不一定都是一样的,造成mysql启动不了的原因真的是太多了。
错误日志路径:my.cnf (Windows是my.ini)文件中的datadir指定路径中已.err结尾的文件