Linux卸载Mysql(完全卸载)
//rpm包安装方式卸载 |
linux安装mysql
1、查看系统版本
[root@test107vm14 rpm-gpg]# lsb_release -a |
2、下载mysql安装包
下载地址:https://dev.mysql.com/downloads/mysql/
选择想要下载的mysql版本和对应的系统版本
下载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 |
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。
至此MySQL就安装完成了,然后是对MySQL的一些设置。
2 MySQL数据库设置
首先启动MySQL
systemctl start mysqld.service |
查看MySQL运行状态,运行状态如图:
systemctl status mysqld.service |
此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:
grep "password" /var/log/mysqld.log |
如下命令进入数据库:
mysql -uroot -p |
输入初始密码(是上面图片最后面的 no;e!5>>alfg),此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password'; |
其中‘new password’替换成你要设置的密码,注意:密码设置必须要大小写字母数字和特殊符号(,/‘;:等),不然不能配置成功
如果要修改为root这样的弱密码,需要进行以下配置:
查看密码策略
show variables like '%password%'; |
修改密码策略
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.新增用户权限
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123456’
这里的123456为你给新增权限用户设置的密码,%代表所有主机,也可以具体到你的主机ip地址
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; |
5、查看用户。
select user,host from mysql.user; |
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 |
5 修改mysql的字符编码(不修改会产生中文乱码问题)
显示原来编码:
show variables like '%character%'; |
修改/etc/my.cnf
[mysqld]character_set_server=utf8init_connect='SET NAMES utf8' |
重启数据库
mysql忘记密码:
1. 检查mysql
服务是否启动,如果启动,关闭mysql
服务
运行命令:ps -ef | grep -i mysql
如果开着就运行关闭的命令:service mysqld stop
2.修改mysql的配置文件my.conf
一般在/etc目录下,运行命令:vi /etc/my.cnf,编辑文件
在文件的[mysqld]标签下添加一句:skip-grant-tables
然后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,经过排查发现是防火墙就没打开造成的,出于安装考虑还是把防火墙开上吧,以下步骤仅供参考啦。
执行firewall-cmd –permanent –zone=public –add-port=3306/tcp,提示FirewallD is not running,如下图所示。
通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启。
通过systemctl start firewalld开启防火墙,没有任何提示即开启成功。
再次通过systemctl status firewalld查看firewalld状态,显示running即已开启了。
5
如果要关闭防火墙设置,可能通过systemctl stop firewalld这条指令来关闭该功能。
6
再次执行执行firewall-cmd –permanent –zone=public –add-port=3306/tcp,提示success,表示设置成功,这样就可以继续后面的设置了。
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 |
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; |
查看远程登陆的user及host是否在表中
如果还是不行的话
show variables like 'port'; |
查看value是否为3306, 如果不是的话, 查看my.cnf, 并将其修改为3306(或你需要的端口号)
如果my.cnf中是3306, 那么注释掉my.cnf中的 skip-grant-tables
再次尝试远程登陆
一定要确认, 输入的ip地址, 用户及密码是正确的!!!