文章目录
花了很多时间在linux上搭建mysql,中间碰到许多坑。在此记录一下。
1. 查询是否安装mysql
1.1 首先升级yum
yum update
1.2 检查是否安装mysql
rpm -qa | grep mysql
# 或命令
yum list installed | grep mysql
##########拓展小知识##############
linux系统基本上分两大类,RedHat系列和Debian系列。
RedHat系列:有Redhat、Centos、Fedora等。
Debian系列: 有Debian、Ubuntu等 。
RedHat 系列常见的安装包格式 rpm包,安装rpm包的命令是“rpm -参数”。
包管理工具 yum。
支持tar包 。
Debian系列常见的安装包格式 deb包,安装deb包的命令是“dpkg -参数”。
包管理工具 apt-get。
支持tar包 。
1.3 卸载
yum -y remove mysql* # -y表示yes的意思
可能碰到如下错误:
[root@zhiyuan-centos7 /]# yum -y remove mysql*
Loaded plugins: fastestmirror
No Match for argument: mysql80-community-release-el7-5.noarch.rpm
No Packages marked for removal
此时要先卸载:mysql80-community-release.noarch
yum -y remove mysql80-community-release.noarch
在卸载其他的,
yum -y remove mysql-*
1.4 删除剩余的mysql文件
find / -name mysql
2.安装MySQL
2.1 下载官方的Yum Repository
网站:https://repo.mysql.com/,选择自己需要的版本。
wget http://repo.mysql.com/mysql80-community-release-el7-5.noarch.rpm
注意: 下载对应linux版本的,比如上面的el7表示是CentOS7的版本,如果下载mysql80-community-release-el8-3.noarch.rpm,安装过程中出报依赖包错误。这里踩过坑。
看官方的网页:https://dev.mysql.com/downloads/repo/yum/
== 扩展知识==
如果你的Linux系统报:-bash: wget: command not found是找不到命令的意思,也就是无法执行下载命令,主要是因为你的系统太干净了,没有安装下载命令的控制器,我们给系统安装个下载命令器即可。
yum install wget -y
上面的noarch是no architecture的缩写,说明这个包可以在各个不同的cpu上使用。
2.2 安装repo
rpm -ivh mysql80-community-release-el7-5.noarch.rpm
执行完会在/etc/yum.repos.d/看到两个repo文件
2. 3 刷新yum及查看yum中的MySQL版本
yum clean all | yum makecache
yum repolist all | grep mysql
可用命令yum-config-manager --disable mysql80-community或yum-config-manager --enable mysql80-community管理状态,或直接编辑/etc/yum.repos.d/mysql-community.repo
2. 4 开始安装mysql
yum -y install mysql-community-server
完成后开启服务:
systemctl start mysqld
设置开机自动启动:
systemctl enable mysqld
3. 登录MySQL
3.1 查看及修改密码
首次安装之后,有个初始密码,首次登录之后必须修改密码。
查看密码:
cat /var/log/mysqld.log | grep password
登录:
mysql -u root -p
输入密码:
修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'aws258369@L';
3.2 远程登录
用DBeaver远程登录,报如下错误:‘192.168.66.1’ is not allowed to connect to this MySQL server"
3.2.1 检查网络和防火墙
打开window的cmd,看不能ping通,和telnet
ping得通,没有问题
telnet过程中发现问题:win10 telnet不是内部或外部命令
telnet 192.168.66.131 3306
如下图,说明端口不通
3.2.2 开防火墙
开启firewalld
systemctl start firewalld | systemctl enable firewalld
永久开放端口3306
firewall-cmd --permanent --zone=public --add-port=3306/tcp
重新加载使之生效
firewall-cmd --reload
查看当前开放的端口
firewall-cmd --permanent --zone=public --list-ports
在尝试连接,还是报同样的错误:‘192.168.66.1’ is not allowed to connect to this MySQL server",这时需要做如下操作,允许远程连接
3.2.3 允许远程连接
use mysql;
update user set host = '%' where user ='root';
flush privileges;
或者创建一个远程连接的用户:
-- 创建一个可以远程登陆的root用户
CREATE USER 'jingjing'@'%' IDENTIFIED WITH mysql_native_password BY 'aws258369@L';
--- 为账户开放权限
grant all privileges on *.* to 'jojo'@'%';
flush privileges;
参考资料:
- 官方文档
- Centos7下MySQL8彻底卸载及安装
- centos7通过yum安装mysql的方法
- Linux下安装MySQL
- Linux中提示-bash: wget: command not found的解决方法
- 软件包后缀 noarch
- is not allowed to connect to this mysql server