Linux下按安装MySQL
我们经常会在Linux上安装MySQL数据库,但是安装的时候总是会这里错,那里错,不顺利,今天整理了一下安装流程,连续安装来了两遍,没有遇到什么大错误,基本上十分钟左右可以搞定,教程如下。当然有些用户可能想要用docker的方式安装,用docker的话更加简单,我也有相应的博文:Docker安装MySQL完整版流程,大家有需要的话可以参考参考,下面开始!
一、环境
Linux version 3.10.0-957.el7.x86_64
mysql-5.7.30-linux-glibc2.12-x86_64.tar
mysql版本可以去https://dev.mysql.com/downloads/mysql/5.7.html#downloads官网查看 ,然后下面的下载命令其实只需要改个版本号即可。
二、MySQL5.7安装
1、下载MySQL5.7
cd /usr/local/
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.30-linux-glibc2.12-x86_64.tar
修改为自己需要的版本号,当然如果没有wget命令的话可以执行下面的命令安装。
yum -y install wget
2、解压安装包
tar -xvf mysql-5.7.30-linux-glibc2.12-x86_64.tar
tar -zxvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
5.7.30的版本第一次解压会得到两个版本,还有一个是test,这里直接用非test的。
3、重命名目录
mv mysql-5.7.30-linux-glibc2.12-x86_64 mysql
习惯上来说,我们会将文件夹重命名为mysql
4、创建mysql用户组和用户
groupadd mysql
useradd -r -g mysql mysql
我们必须创建mysql用户,因为mysql的初始化需要。
5、创建数据目录并赋予权限
mkdir -p /data/mysql #创建目录
chown mysql:mysql -R /data/mysql #赋予权限
通常都会将数据存放目录外置到别的目录,这样子升级mysql不会影响历历史数据。
6、修改配置文件
mysql有一个配置文件叫做my.cnf,我们会在配置文件中指定端口,数据存放目录,以及编码格式。
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
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
这里要注意,直接黏贴linux界面最后几行可能会自动加上#,一定要检查内容是否一致。
7、初始化数据库
cd /usr/local/mysql/bin/
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
这里要指定配置文件,根目录,数据文件,用户。
详细报错如下:/usr/sbin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
后面发现这是Linux-centos版本的问题,有的版本缺少libaio.so.1文件
解决方法:
1,安装mysql之前检查下libaio.so.1的位置
# whereis libaio.so.1
libaio.so: /usr/lib64/libaio.so.1
2,如果执行了whereis libaio.so.1,没有找到该文件,就要手动安装下libaio
yum install -y libaio
8、查看root用户密码
cat /data/mysql/mysql.err
初始化完成后,默认会生成一个root用户的密码,如下位置。这里要记住,后面登录的时候需要使用。
9、启动mysql
先将mysql.server放置到/etc/init.d/mysql中
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
启动
service mysql start
10、登录mysql,修改root用户的密码
./mysql -u root -p #bin目录下
密码为初始化的时候生成的随机密码串。
SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;
依次执行上面三条命令,这里密码设置为123456,当然生产上要符合密码规范。
好了到这里就安装好啦,我们来远程连接下。
11、远程连接
额。肯定是防火墙没有关,因为我是CentOS7,默认是firewalld防火墙,这里直接关闭,正式环境下需要开放3306端口即可。
systemctl stop firewalld
然后再连接测试!
额,因为我们的root用户默认只能够本机访问,这里要开放下,登录mysql,执行如下三条命令即可.
use mysql #访问mysql库
update user set host = '%' where user = 'root'; #使root能再任何host访问
FLUSH PRIVILEGES;
好啦,到这里才是最终的打大功告成!