Linux卸载Mysql(完全卸载)

//rpm包安装方式卸载
查包名:rpm -qa|grep -i mysql
删除命令:rpm -e –nodeps 包名

//yum安装方式下载
1.查看已安装的mysql
命令:rpm -qa | grep -i mysql
2.卸载mysql
命令:yum remove mysql-community-server-5.6.36-2.el7.x86_64
查看mysql的其它依赖:rpm -qa | grep -i mysql

//卸载依赖
yum remove mysql-libs
yum remove mysql-server
yum remove perl-DBD-MySQL
yum remove mysql

linux安装mysql

1、查看系统版本

[root@test107vm14 rpm-gpg]# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.3.1611 (Core)
Release: 7.3.1611
Codename: Core
1234567

2、下载mysql安装包

下载地址:https://dev.mysql.com/downloads/mysql/
选择想要下载的mysql版本和对应的系统版本

img
这里写图片描述

下载MySQL-5.6.41-1.el7.x86_64.rpm-bundle.tar,我下载的mysql5.6版本,下载新版本类似,找到对应的rpm-bundle.tar安装包下载即可!
这里写图片描述

3、检查是否已经存在mysql,若存在卸载,避免安装时产生一些错误!

rpm -qa | grep -i mysql

若存在,使用rpm -e packname –nodeps命令删除安装包

which mysql

查看mysql配置信息,删除对应的配置文件等信息!

删除mysql用户

userdel mysql

4、上传安装包

将下载的安装包上传到相应的目录,我上传至/usr/local/mysql 目录

mkdir -p /usr/local/mysql1

上传安装包

5、解压缩安装包

tar -xvf MySQL-5.6.41-1.el7.x86_64.rpm-bundle.tar1

解压后,得到如下文件
这里写图片描述

6、创建mysql用户和组

groupadd -g 1000 mysql
useradd mysql -g mysql -p mysql

7、安装mysql

rpm -ivh MySQL-server-5.6.41-1.el7.x86_64.rpm

提示错误:

conflicts with file from package mariadb-libs-1:5.5.56-2.el7.x86_641

与mariadb冲突,删除mariadb即可!

rpm -e mariadb-libs-1:5.5.56-2.el7.x86_64 --nodeps1

然后重新执行上面的安装命令!

rpm -ivh MySQL-client-5.6.41-1.el7.x86_64.rpm1rpm -ivh MySQL-devel-5.6.41-1.el7.x86_64.rpm1rpm -ivh MySQL-shared-5.6.41-1.el7.x86_64.rpm1

安装这四个即可,至此安装完成!

8、启动mysql

service mysql start1

启动成功后,可查看是否成功监听3306端口

9、使用随机密码登录mysql

find / -name .mysql_secret1

查找生成的随机密码路径,查看此文件,获取随机密码

这里写图片描述

使用随机默认密码登录mysql

mysql -u root -p1

10、修改密码

登陆成功后,修改密码,否则无法选择数据库进行操作

SET PASSWORD=password('password');1FLUSH PRIVILEGES;1

至此,便可以进行mysql操作了;

Centos7 安装MySQL 5.7

在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。

1 下载并安装MySQL官方的 Yum Repository

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

使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了。

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

之后就开始安装MySQL服务器。

yum -y install mysql-community-server

这步可能会花些时间,安装完成后就会覆盖掉之前的mariadb。

img

至此MySQL就安装完成了,然后是对MySQL的一些设置。

2 MySQL数据库设置

首先启动MySQL

systemctl start  mysqld.service

查看MySQL运行状态,运行状态如图:

systemctl status mysqld.service

img

此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:

grep "password" /var/log/mysqld.log

img

如下命令进入数据库:

mysql -uroot -p

输入初始密码(是上面图片最后面的 no;e!5>>alfg),此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:

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

其中‘new password’替换成你要设置的密码,注意:密码设置必须要大小写字母数字和特殊符号(,/‘;:等),不然不能配置成功

如果要修改为root这样的弱密码,需要进行以下配置:

查看密码策略

show variables like '%password%';

img

修改密码策略
vi /etc/my.cnf
添加validate_password_policy配置

选择0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2需要提供密码字典文件

#添加validate_password_policy配置validate_password_policy=0#关闭密码策略validate_password = off

重启mysql服务使配置生效

systemctl restart mysqld

然后就可以修改为弱密码啦

CentOS7使用yum安装MySQL8.0

1、yum仓库下载MySQL:

sudo yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm//这里的地址可以进入 https://repo.mysql.com/中去寻找自己需要的版本

2、yum安装MySQL:

sudo yum install mysql-community-server

3、启动MySQL服务:

sudo service mysqld start

4、检查MySQL服务状态:

sudo service mysqld status

5、查看初始密码(如无内容直接跳过):

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

6、本地MySQL客户端登录:

mysql -uroot -p

7、输入密码为第5步查出的,如果没有,直接回车,然后输入命令

flush privileges;

8、修改root登录密码:

use mysql;ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';

注意:开始遇到问题是不输入密码或输错密码都能连接MySQL server,后来在修改允许阿里CentOS7允许远程操作MySQL数据库时,

才发现需要去调整 /etc/my.cnf文件,注释掉skip-grant-tables,重启MySQL服务(sudo service mysqld restart),quit退出连接,重新连接就需要输入密码了

后期如果忘记密码,可以通过skip-grant-tables配置跳过输入密码登录MySQL,执行7、8步进行修改,如果‘root’@’localhost’变为‘root’@’%’,那么alter语句中的也要修改

9、配置MySQL允许外部访问:

1)首先设置阿里云安全组规则入方向,支持MySQL端口3306可访问(协议类型下拉菜单中有MySQL端口)

2)服务端登录MySQL,use mysql;

然后在mysql中执行以下语句, 可查看用户及对应允许访问主机

select user,host from user

然后执行

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

允许任何外部可访问;再执行上一步查看命令,可比较结果

3. mysql开启远程访问权限的设置

MySql-Server 出于安全方面考虑默认只允许本机(localhost, 127.0.0.1)来连接访问.

所以必须给root修改可以远程访问的权限

1.在连接服务器后,操作mysql系统数据库

mysql -u root -puse mysql;

2.查询用户列表

select User,authentication_string,Host from user;

3.新增用户权限

  1. GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123456’

    这里的123456为你给新增权限用户设置的密码,%代表所有主机,也可以具体到你的主机ip地址

  2. flush privileges;

    这一步一定要做,不然无法成功! 这句表示从mysql数据库的grant表中重新加载权限数据

    因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。

4.删除用户及其权限

delete from user where Host=’%’;

3.1 或者也可新创建一个远程登陆的用户

示例账号为user、密码为123456。

create user 'user'@'%' identified by '123456';

4、赋予用户user全部权限,并允许远程主机使用user账号访问MySQL,并使配置生效。

grant all privileges on *.* to 'user'@'%' with grant option;flush privileges;

img

5、查看用户。

select user,host from mysql.user; 

img

4 为firewalld添加开放端口

添加mysql端口3306

firewall-cmd --zone=public --add-port=3306/tcp --permanent

如果提示 : FirewallD is not running 查看 centos出现“FirewallD is not running”怎么办

然后再重新载入

firewall-cmd --reload

img

5 修改mysql的字符编码(不修改会产生中文乱码问题)

显示原来编码:

show variables like '%character%';

img

修改/etc/my.cnf

[mysqld]character_set_server=utf8init_connect='SET NAMES utf8'

重启数据库

img

mysql忘记密码:

1. 检查mysql服务是否启动,如果启动,关闭mysql服务

运行命令:ps -ef | grep -i mysql

img

如果开着就运行关闭的命令:service mysqld stop

img

2.修改mysql的配置文件my.conf

一般在/etc目录下,运行命令:vi /etc/my.cnf,编辑文件

img

在文件的[mysqld]标签下添加一句:skip-grant-tables

img

然后wq!保存退出。

3.重启数据库

运行命令:service mysqld restart

5.进入到mysql数据库

运行命令:mysql -u root 

6.进入到mysql数据库

运行命令:mysql -u root 

7.修改密码

运行语句:use mysql;继续运行语句:update mysql.user set authentication_string=password('root_password') where user='root';    root_password替换成你想要的密码 

8.把步骤2加的东西删除掉,在重启服务器,就可以使用刚才修改的密码登录进服务器了。

mysql -u root -p

到这一步已经全部结束。

You must reset your password using ALTER USER statement before executing this statement

alter user user() identified by “root”;

其他配置

1、设置安全选项:

mysql_secure_installation

2、关闭MySQL

systemctl stop mysqld service mysql stop;

3、重启MySQL

systemctl restart mysqld serivce restart mysql

4、查看MySQL运行状态

systemctl status mysqld service mysql status

5、设置开机启动

systemctl enable mysqld 

6、关闭开机启动

systemctl disable mysqld 

7、配置默认编码为utf8:

vi /etc/my.cnf #添加 [mysqld] character_set_server=utf8 init_connect=’SET NAMES utf8’

其他默认配置文件路径:

配置文件:/etc/my.cnf 日志文件:/var/log//var/log/mysqld.log 服务启动脚本:/usr/lib/systemd/system/mysqld.service socket文件:/var/run/mysqld/mysqld.pid

8、查看版本

select version();

遇到的错误

centos出现“FirewallD is not running”怎么办

最近在阿里云服务器centos上安装了mysql数据库,默认是不开启远端访问功能,需要设置一下防火墙,在开放默认端口号 3306时提示FirewallD is not running,经过排查发现是防火墙就没打开造成的,出于安装考虑还是把防火墙开上吧,以下步骤仅供参考啦。

  1. 执行firewall-cmd –permanent –zone=public –add-port=3306/tcp,提示FirewallD is not running,如下图所示。

    centos出现“FirewallD is not running”怎么办

  2. 通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启。

    centos出现“FirewallD is not running”怎么办

  3. 通过systemctl start firewalld开启防火墙,没有任何提示即开启成功。

    centos出现“FirewallD is not running”怎么办

  4. 再次通过systemctl status firewalld查看firewalld状态,显示running即已开启了。

    centos出现“FirewallD is not running”怎么办

  5. 5

    如果要关闭防火墙设置,可能通过systemctl stop firewalld这条指令来关闭该功能。

    centos出现“FirewallD is not running”怎么办

  6. 6

    再次执行执行firewall-cmd –permanent –zone=public –add-port=3306/tcp,提示success,表示设置成功,这样就可以继续后面的设置了。

    centos出现“FirewallD is not running”怎么办

    END

报错2058 :连接 mysql 8.0.11 解决方法登录你的 mysql 数据库,然后 执行这条SQL:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

#password 是你自己设置的root密码

localhost是允许登陆的主机, 允许所有则设置为 %

报错2003: 无法远程连接

ERROR 2003 (HY000): Can’t connect to MySQL server on ‘192.168.0.19’ (111)

个 原因就是Mysql数据库的默认配置文件my.cnf(linux下)中的bind-address默认为127.0.0.1,所以就算你创建了可以 remote访问的用户,你也不能使用mysql -h命令进行访问,若访问就会出现上出问题,因为此时Mysql只接受localhost,所以需要把bind-address屏蔽掉。

my.cnf一般在 /etc/mysql 下面,如果不在使用locate my.cnf查找,修改前的my.cnf配置文件为:

首先寻找my.cnf

whereis my.cnf

image-20210614172441001

vim /etc/mysql/my.cnf

修改前的my.cnf配置文件代码
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
我们需要做的就是注释掉这个bind-address代码

如果上面还不能解决可能是防火强的问题了

首先关闭防火墙, 再尝试远程连接

systemctl stop firewalld

如果还是不行的话

登录数据库

修改登录权限

GRANT ALL PRIVILEGES ON *.* TO '登录用户名'@'允许登录的主机' '登录密码' WITH GRANT OPTION;

eg. 如果想让任何主机都能通过 root 账户登录数据库:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'  WITH GRANT OPTION;  // ‘%’ 表示任意主机

刷新权限表,使以上操作立即生效

flush privileges;

千万不要忘了刷新权限

查看用户权限

select user,host from mysql.user;

image-20210614173013190

查看远程登陆的user及host是否在表中

如果还是不行的话

show variables like 'port';

image-20210614173201324

查看value是否为3306, 如果不是的话, 查看my.cnf, 并将其修改为3306(或你需要的端口号)

如果my.cnf中是3306, 那么注释掉my.cnf中的 skip-grant-tables

再次尝试远程登陆

一定要确认, 输入的ip地址, 用户及密码是正确的!!!