Linux安装Mysql
对于MySQL数据库的安装,我们将要使用rpm的方式进行安装。那么首先我们先了解一下什么rpm?
RPM:全称为 Red-Hat Package Manager,RPM软件包管理器,是红帽Linux用于管理和安装软件的工具。
1、安装
首先我们要 检测当前系统是否安装过MySQL相关数据库。
需要通过rpm相关指令,来查询当前系统中是否存在已安装的mysql软件包,执行指令如下:
rpm -qa 查询当前系统中安装的所有软件
rpm -qa | grep mysql 查询当前系统中安装的名称带mysql的软件
rpm -qa | grep mariadb 查询当前系统中安装的名称带mariadb的软件
通过rpm -qa 查询到系统通过rpm安装的所有软件,太多了,不方便查看,所以我们可以通过管道符 | 配合着grep进行过滤查询。
通过查询,我们发现在当前系统中存在mariadb数据库,是CentOS7中自带的,而这个数据库和MySQL数据库是冲突的,所以要想保证MySQL成功安装,需要卸载mariadb数据库。
在rpm中,卸载软件的语法为:
rpm -e --nodeps 软件名称
那么,我们就可以通过指令,卸载 mariadb,具体指令为:
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
我们看到执行完毕之后, 再次查询 mariadb,就查不到了,因为已经被成功卸载了。
接下来就是将MySQL上传到服务器或者虚拟机。
Linux上安装软件常见的几种方式:
源码编译
压缩包解压(一般为tar.gz)
编译好的安装包(RPM、DPKG等)
在线安装(YUM、APT等)
以上几种方式便捷性依次增加,但通用性依次下降,比如直接下载压缩包进行解压,这种方式一般需要自己做一些额外的配置工作,但只要掌握了方法,各个平台基本都适用,YUM虽然简单,但是平台受限,网络受限,必要的时候还需要增加一些特定YUM源。
几种安装方式最好都能掌握,原则上能用简单的就用简单的:YUM>RPM>tar.gz>源码
下载官方 Mysql 包
下载mysql MySQL :: Download MySQL Community Server (Archived Versions)
- 选择对应的包 如下5.7包
- 上传解压(解压后可删除安装包,节省空间)
tar -zxvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
-
先检查是否有mysql用户组和mysql用户,没有就添加有就忽略:
groups mysql
添加用户组和用户
groupadd mysql && useradd -r -g mysql mysql
- 创建数据目录并赋予权限
mkdir -p /data/mysql
chown mysql:mysql -R /data/mysql
- 修改配置文件 vim /etc/my.cnf (没有就新建)
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
-
初始化
解压后的mysql-5.7.35-linux-glibc2.12-x86_64文件移动到/usr/local/mysql (文件夹名称修改为mysql不带版本号信息)
cd /usr/local/mysql/bin/
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
- 查看初始密码
cat /data/mysql/mysql.err
- 启动mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
service mysql start
修改密码
- 开启免密码登陆 修改my.cnf文件 默认在/etc/my.cnf
vim /etc/my.cnf
在【mysqld】模块下面添加:skip-grant-tables 保存退出。
- 重启服务,使配置生效 。
service mysql restart
- 登陆
/usr/local/mysql/bin/mysql -u root -p //不输入密码直接敲回车键
-
刷新规则允许外部访问
use mysql #选择访问mysql库 update user set host = '%' where user = 'root'; #使root能再任何host访问 FLUSH PRIVILEGES; #刷新
5.修改密码
ALTER USER "root"@"%" IDENTIFIED BY "root";
FLUSH PRIVILEGES; #刷新
-
退出
quit 把/etc/my.cnf免密删掉。 重启服务 service mysql restart
-
登陆
/usr/local/mysql/bin/mysql -u root -p //输入刚修改的密码root敲回车键
用户权限之创建新用户并给授权指定的数据库权限
创建mysql新用户
CREATE USER 'test'@'%' IDENTIFIED BY '123';
备注上面@后的命令解释
'%' - 所有情况都能访问
‘localhost’ - 本机才能访问
’111.222.33.44‘ - 指定 ip 才能访问
给用户授予权限
grant all on 数据库名.数据库表 to 用户名@'%' identified by "密码";
备注
all 可以替换为 select,delete,update,create,drop
数据库名 所有的 用*
数据库表 所有的 用*
如果是阿里云ECS,记得查看云安全组规则是否开放了3306端口,如果没有,记得加上
开放端口号
- 查看开放的端口号
firewall-cmd --list-all
-
设置开放的端口号
firewall-cmd --zone=public --add-port=3306/tcp --permanent
-
重启防火墙并查看是否生效
firewall-cmd --reload firewall-cmd --list-all
开放端口号
- 查看开放的端口号
firewall-cmd --list-all
-
设置开放的端口号
firewall-cmd --zone=public --add-port=3306/tcp --permanent
-
重启防火墙并查看是否生效
firewall-cmd --reload firewall-cmd --list-all