前言

最近买了一个比较实惠的服务器,在迁移博客的时候发现这次比之前几次还麻烦原因就出现在了Mysql的安装中。在之前的运维部署中我写了一些关于nginx和php的安装唯独没有mysql的导致踩了不少的坑。所以特写本文章记录。本文记录了安装过程中能够所遇到的坑!本文中用CentOS为例其他Linux大同小异

选择合适的MySQL

访问MySQL官网,点击如图的链接可以安装之前的MySQL版本

CentOS选择RedHat

在Linux终端输入uname -a 查看系统架构。根据自己的Linux架构选择合适的版本滑倒最下面找到这一个按Download会跳转到一个页面根据图片所示

安装MySQL

在终端输入如下所示的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#下载MySQL后面的链接是刚刚复制的
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28-el7-x86_64.tar.gz

#解压mysql.tar.gz
tar -xzvf mysql-8.0.28-el7-x86_64.tar.gz

#移动到自己想存放的位置这里我存放到/usr/local/mysql
mv mysql-8.0.28-el7-x86_64 /usr/local/mysql

#创建一个不允许远程登录的用户用做mysql启动用户,不创建默认使用root可能会有安全问题
#创建一个群组
groupdadd www-data

#创建用户
useradd -g www-data mysql -s /sbin/nologin

#改变mysql目录拥有权
chown -R mysql:www-data /usr/local/mysql

#设置权限
chmod 755 /usr/local/mysql

#创建MySQL数据文件夹
mkdir /usr/local/mysql/data


#初始化数据库,执行之后最后面的是临时密码如下图所示
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql

#复制配置文件
cp my-default.cnf /etc/my.cnf

#修改文件如下图二所示
vim /usr/local/mysql/support-files/mysql.server


#软链接到系统服务中可以直接使用service mysql (startrestartstop)控制mysql服务
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

#软链接到/usr/bin否则如果不在当前目录使用mysql会提示-bash: mysql: command not found
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql


#配置开机启动
chmod 755 /etc/init.d/mysql
chkconfig --add mysql
chkconfig --level 345 mysql on

默认密码

配置MySQL

1
2
3
4
5
6
7
8
9
10
11
12
#登录MySQL,默认root密码为前面步骤中生成的临时密码
mysql -u root -p

#登陆后修改临时密码为test
set password = password('test');

#MySQL8.0设置密码
set password='test';

#设置数据库允许远程登录
grant all privileges on *.* to 'root'@'%' identified by 'root';

Q&A

1、mysqld_safe error: log-error set to ‘/var/log/mariadb/mariadb.log’, however file don’t exists. Create writable for user ‘mysql’.

1
2
3
4
5
6
7
mkdir /var/log/mariadb

touch /var/log/mariadb/mariadb.log

chown -R mysql:mysql /var/log/mariadb

chmod 755 /var/log/mariadb

2、 -bash: mysql: command not found

1
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql

3、Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’

1
2
3
4
5
6
find / -name mysql.sock

结果:/usr/local/mysql/mysql.sock

cp /usr/local/mysql/mysql.sock /tmp/mysql.sock