Linux上Mysql-5.7.30安装
1、准备工作
Mysql文件资源
提取码:dzgo
2、Mysql安装
2.1、上传Mysql包并解压
使用如下命令
tar -zxvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
2.2、创建Mysql组和Mysql用户
创建Mysql组和Mysql用户,是为了在后续做初始化数据库等操作
命令如下:
<!-- 创建Mysql组 -->
groupadd mysql
<!-- 创建Mysql用户并加入mysql用户组 -->
useradd -r -g mysql mysql
2.3、创建data目录
目的是为了Mysql存放数据显得规整一点,如下所示:
2.4、创建Mysql的配置文件 my.cnf
我在这里创建了一个conf文件夹,并将 my.cnf 文件放在了下面:
[mysqld]
# 这个是你的网段地址
bind-address=192.168.231.131
port=3306
user=mysql
# 下面这里我全用的是相对路径
basedir=../
datadir=../data
socket=../data/mysql.sock
log-error=../data/mysql.err
pid-file=../data/mysql.pid
#character config
character-set-server=utf8
symbolic-links=0
explicit_defaults_for_timestamp=true
[client]
character-set-server=utf8
2.5、初始化Mysql数据库
进入到Mysql的bin目录下,执行如下命令:
./mysqld --defaults-file=../conf/my.cnf --basedir=../ --datadir=../data/ --user=mysql --initialize
> 假设这块报如下的错,如果没有报错,直接可忽略
这个的原因是没有安装libaio.so.1,安装即可
输入如下命令:
出现下图即可,可继续往后执行
yum install -y libaio
如果直接出现了下图所示,那么下图中红框的就是初始密码:
如果没有,则去mysql.err文件查看,在我们刚才创建的data目录下,两个的日志一样,打开如下所示:
2.6、修改服务启动文件mysql.server
进入到Mysql包的根目录下的support-files目录下
找到对应的mysql.server文件修改如下两张图的地方
2.7、创建localhost.localdomain.pid文件
在相应的目录下创建localhost.localdomain.pid文件
命令如下:
<!-- 先创建相应的路径 -->
mkdir /var/lib/mysql
<!-- 再创建相应的文件 -->
vi /var/lib/mysql/localhost.localdomain.pid
创建完成之后往里面随便写一个数字,localhost.localdomain.pid
保存的是MySQL所启动的后台服务进程的PID值,启动Mysql服务时会找这个文件并更新Mysql的进程id值,如果这个文件丢了,就会报错,如果我们直接启动Mysql服务,就会看到如下图所示:
2.8、创建mariadb.log文件
在相应的目录下创建mariadb.log文件
命令如下:
<!-- 先创建相应的路径 -->
mkdir /var/log/mariadb
<!-- 再创建相应的文件 -->
vi /var/log/mariadb/mariadb.log
这个文件目前我也不知道是干啥的,但是不创建就启动不成功,如下图所示:
2.9、删除/etc/my.cnf
删除etc目录下的my.cnf文件,否则启动的时候会去找它。
rm -f /etc/my.cnf
2.10、启动Mysql服务
./mysql.server start
输入启动命令之后,如下图所示:
然后执行ps -ef命令查看Mysql进程,如下所示,则代表Mysql服务进程已经运行。
3、Mysql连接
上面看到Mysql服务的进程已经在运行,下面直接使用Mysql自带的客户端连接试试。
这里我们进入到bin目录下,使用root用户连接,命令如下:
./mysql -u root -p
输入前面数据库安装时初始化Mysql给的默认密码,出现下图则代表成功,但是现在还是无法使用,因为Mysql系统需要我们修改初始密码,请看第四个大标题:
4、修改Mysql的用户密码
在上面连接成功之后,我们进行命令操作时,是无法操作的,因为Mysql官方需要我们修改数据库的初始密码,如下图所示:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
我们使用如下命令来修改初始密码:
<!-- 设置新密码 -->
SET PASSWORD = PASSWORD('root');
<!-- 对root用户生效 -->
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
<!-- 刷新配置 -->
FLUSH PRIVILEGES;
5、使用navicat连接数据库
当我们使用navicat连接刚搭建的数据库时,配置如下图
点击测试连接之后,出现如下的错误:
这个出现的原因是我们的数据库只允许本地连接,所以我们要回到我们的服务端修改一些配置。
在我们创建一个Mysql数据库时,Mysql会生成许多默认的表,其中user表就保存着我们的一些用户的读写信息,以及哪个host可以连接等等,所以我们要去服务端修改这个user表。
进入到服务端之后,我们使用下面语句看一下我们当前所有用户所允许被哪些host连接。
<!-- 使用mysql数据库 -->
use mysql;
<!-- 查询目前都有哪些用户
host的localhost表示只有本地才可以
改成 % 代表所有的host都可访问 -->
select host,user from user;
<!-- 更新root用户的连接配置 -->
update user set host = '%' where user ='root';
<!-- 刷新配置 -->
flush privileges;
上述操作完成之后,再次使用navicat进行连接。
6、mysql设置快速启动
如果我们不想每一次都去mysql的安装目录下去启动的话,我们可以把mysql启动文件mysql.server放到 /etc/init.d/ 目录下,然后用下面的命令启动关闭。
我们进入到mysql的support-files目录下,执行如下命令:
<!-- 复制当前目录下的mysql.server文件放到/etc/init.d/目录下并改名mysql -->
cp mysql.server /etc/init.d/mysql
<!-- 启动mysql服务 -->
service mysql start
<!-- 关闭mysql服务 -->
service mysql stop
原因:Linux 启动时,运行一个叫做init 的程序,然后由它来启动后面的任务,包括多用户环境,网络等,/etc/init.d/ 就是它加载的一个目录。