【MySQL基础】2- Linux安装MySQL

下载安装

1.0 下载地址

下载MySQL历史版本地址:https://downloads.mysql.com/archives/community/

在这里插入图片描述

我这里下载的版本是5.7.24

https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

或者
http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
1.1 查看环境下是否已经安装MySQL
rpm -qa | grep mysql
1.2 创建目录

创建目录用于存放MySQL的各种数据:

mkdir -p /root/soft/mysql57
mkdir -p /root/soft/mysql57/conf # 配置文件
mkdir -p /root/soft/mysql57/log # 日志
mkdir -p /root/soft/mysql57/data # 数据
1.3 下载安装包
cd /root/soft/mysql57
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
1.4 解压安装包
tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
1.5 复制解压后的安装包/usr/local目录下,并命名为mysql
cp -r mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql
1.6 添加用户组mysql
# 在/usr/local目录下执行
groupadd mysql
1.7 创建用户mysql并将其添加到用户组mysql
useradd -r -g mysql mysql
1.8 查看用户是否添加成功
groups mysql
1.9 赋予读写权限
[root@pophas local]# cd /usr/local/mysql/
[root@pophas mysql]# chown -R mysql:mysql ./

2.0 创建配置文件
cd /root/soft/mysql57/conf
vim my.cnf
>>>
[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data/mysql
socket=/tmp/mysql.sock
log-error=/usr/local/mysql/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
#不区分大小写
lower_case_table_names = 1

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

max_connections=5000

default-time_zone = '+8:00'

my.conf配置文件说明:

保存编辑 …

2.1 拷贝配置文件到/etc目录下
cd /root/soft/mysql57/conf
cp my.cnf /etc
2.2 初始化数据库
2.2.1 安装 libaio
yum install libaio # 如果没有安装可能会导致初始化报错
2.2.2 创建存放错误日志的目录
mkdir -p /usr/local/mysql/log/
2.2.3 创建错误日志文件 并 赋予权限
cd /usr/local/mysql/log/

# 创建指定的文件`mysqld.log`
vim mysqld.log # >> 不需要编辑内容,直接保存退出即可

# 赋予权限
chmod 777 mysqld.log
chown mysql:mysql mysqld.log
    
2.2.4 初始化数据库
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US
2.4.5 远程交互修改密码
grant all privileges on *.* to '新用户名'@'%' identified by '新密码';

flush privileges;
2.3 查看初始密码
cat /usr/local/mysql/log/mysqld.log

root@localhost: 这里就是初始密码

在这里插入图片描述

2.4 启动服务
2.4.1 创建指定的pid文件
cd /var/run/mysqld
vim mysqld.pid # >>> 内容为空,直接保存退出 :wq
2.4.2 赋予权限
chmod 777 mysqld.pid
chown mysql:mysql mysqld.pid 
2.4.3 开启mysql服务
/usr/local/mysql/support-files/mysql.server start

启动成功如下图:

在这里插入图片描述

2.4.4 修改初始密码
# 查看初始密码
cat mysqld.log |grep root@localhost
[root@pophas mysqld]# /usr/local/mysql/bin/mysql -uroot -p
Enter password: # 这里输入初始密码

# 进入mysql的交互模式
mysql> alter user 'root'@'localhost' identified by '123456';
mysql> flush privileges;

在这里插入图片描述

2.5 设置开机自启
cd /usr/local/mysql/support-files

cp mysql.server /etc/init.d/mysqld

chkconfig --add mysqld
2.6 添加环境变量
vim /etc/profile

export PATH=/usr/local/mysql/bin:$PATH

source /etc/profile
2.7 使用service命令启动服务
cd /etc/init.d

在这里插入图片描述

如果将mysql.server命名为mysql,那么启动命令:service mysql start

service mysqld start
# sudo service mysqld start
2.8 使用service命令关闭服务
service mysqld stop
2.9 使用service命令重启服务
service mysqld restart
3.0 查看运行状态
service mysqld status

踩坑

1.0 初始化数据库报错

执行以下命令报错:

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US

错误信息:

2021-07-31T15:19:41.200872Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2021-07-31T15:19:41.202813Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2021-07-31T15:19:41.202845Z 0 [ERROR] Aborting

在这里插入图片描述

问题原因:

由于已经完成初始化,数据目录有文件,导致被终止;

解决方案:

将数据目录下已经存在的文件全部删除掉;

rm -rf /usr/local/mysql/data/*

然后重新初始化;

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US

亲测有效 …

1.1 启动mysql服务报错(一)

执行以下命令报错:

[root@pophas mysqld]# /usr/local/mysql/support-files/mysql.server start

错误如下:

Starting MySQL....The server quit without updating PID file[失败]/local/mysql/run/mysqld/mysqld.pid).

思路分析:

查看日志

cd /usr/local/mysql/log
less mysqld.log

在这里插入图片描述

看到日志,才知道是端口被占用了,这才想起之前使用docker部署了MySQL

为了不影响之前的应用,我选择修改监听端口号:3306 >> 3307

vim /etc/my.cnf >>

[client]
port = 3307 # 客户端连接端口

[mysqld]
port = 3307 # 监听端口号

然后保存退出 ;

重新执行启动命令:

[root@pophas mysqld]# /usr/local/mysql/support-files/mysql.server start
1.2 启动mysql服务报错(二)

执行以下命令报错:

[root@pophas mysqld]# /usr/local/mysql/support-files/mysql.server start

错误如下:

Starting MySQL....The server quit without updating PID file[失败]/local/mysql/run/mysqld/mysqld.pid).

思路分析:

查看日志

cd /usr/local/mysql/log
cat mysqld.log

问题:

[ERROR] Can't start server: can't check PID filepath: No such file or directory

在这里插入图片描述

看到日志可以知道是配置的pidfile路径出现问题

接下来我们查看配置文件vim /etc/my.cnf

果不其然,配置文件配置的pidfile压根就不存在;

在这里插入图片描述

修改为我们实际mysqld.pid的路径:/var/run/mysqld/mysqld.pid,然后保存退出;

然后我们重新启动服务:

[root@pophas mysqld]# /usr/local/mysql/support-files/mysql.server start
1.3 启动mysql服务报错(三)

执行以下命令报错:

[root@pophas mysqld]# /usr/local/mysql/support-files/mysql.server start

错误如下:

Starting MySQL....The server quit without updating PID file[失败]/local/mysql/run/mysqld/mysqld.pid).

思路分析:

查看日志

cd /usr/local/mysql/log
cat mysqld.log

问题

[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
[ERROR] Fatal error: Failed to initialize ACL/grant/time zones structures or failed to remove temporary table files
[ERROR] Aborting

在这里插入图片描述

思路分析:

出现这个错误的原因是配置文件的datadir设置有误,导致不能找到mysql数据库下的user表,修改配置即可。

解决方案1:

要么重新初始化,保持初始化的datadir路径与配置文件my.cnf的路径一致;

那么修改配置文件:

datadir=/usr/local/mysql/data

解决方案2:

需要重新对数据库进行初始化,在此之前需要删除数据目录下的所有文件

rm -rf /usr/local/mysql/data/*

然后初始化

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US

接下来重新启动服务:

[root@pophas mysqld]# /usr/local/mysql/support-files/mysql.server start

启动成功.

在这里插入图片描述

1.4 使用 use mysql; 报错

命令行如下:

mysql> use mysql;

报错信息如下:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

思路分析:

提示要用ALTER USER修改密码才可以;

alter user 'root'@'localhost' identified by '123456';
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值