Linux中安装mysql数据库详细步骤
Posted 寒冰宇若
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中安装mysql数据库详细步骤相关的知识,希望对你有一定的参考价值。
前言
最近在折腾性能测试,在测试一个接口的时候发现少量的并发数时会报错,CPU有很大的iowait比例,大量用户并发时反而没有报错。该接口应用代码没有复杂逻辑,分析初步定为数据库。数据库用的是mysql,需要安装MysqlReport来查看数据库的各项数据,于是在自己的阿里云测试环境进行安装和测试。
安装步骤
1.下载
打开官方下载地址:https://dev.mysql.com/downloads/mysql/5.7.html,根据自己对应是系统进行选择,这里演示的是Linux系统的安装,选择如下图(文件有600多M,下载需要等待一定时间)
方便大家学习,安装包放百度网盘上:链接:https://pan.baidu.com/s/1hXKUSe3RY7-A0IeW0ihfCg 提取码:v6cj
如果嫌注册账号麻烦,可以跳过账号注册,直接点击下面的just start my download即可下载,这里用的是windows系统下载,下载完成通过ftp或者rz命令进行文件上传到Linux,当然也可以在Linux系统中用wget方式进行下载,命令是:wget https://dev.mysql.com/downloads/file/?id=494229
2.解压,并放入用户安装目录
在linux根目录下创建文件夹,将文件上传到该文件夹下,此文件夹为临时文件夹,后面会将解压的文件目录放入/usr/local目录下
解压安装包:
解压完成后可以看到如下图文件夹:
将文件夹移动到/usr/local目录下并重命名为mysql
3.安装准备
3.1 创建mysql组及mysql用户,并授权
创建mysql组:
创建mysql用户:
3.2 创建数据存放目录并授权(注意,这里是在根目录下创建/data/mysql目录,不要搞错了,我是因为没在根目录下创建,所有后面初始化时失败了多次,惨痛的教训,希望后来人不要重蹈覆辙)
回到根目录下创建数据存放目录/data/mysql:
查看目录是否创建成功:
3.3 配置my.cnf文件
根目录下执行:vim /etc/my.cnf
打开后将下面配置代码粘贴进去,按:wq后按Enter键保存退出:
[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.33),my.cnf会有默认内容,如下,则需要你手动修改datadir、socket、log-error、pid-file几个参数
3.4 初始化数据库
进入mysql的bin目录:cd /usr/local/mysql/bin
执行初始化并查看mysql账户密码:
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
cd /
cat /data/mysql/mysql.err
4. 启动mysql
4.1 将mysql.server放置到/etc/init.d/mysql中
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
4.2 启动mysql,并查看是否启动成功
如果启动成功了,表示mysql安装成功了!!!
---------------------------------------------------------------------------------------------------------------------------------------------------------------
遇到的问题:
问题1:初始化时提示:--initialize specified but the data directory has files in it. Aborting.
原因分析:是因为根目录下data目录下有文件
解决办法:在根目录下使用rm -rf data,将data文件夹删掉,重新创建一个/data/mysql文件目录即可,命令为:mkdir -p /data/mysql
问题2:初始化时提示:log-error set to \'/var/log/mariadb/mariadb.log\', however file don\'t exists. Create writable for user \'mysql\'.
原因分析:没有/var/log目录下没有mariadb目录和mariadb.log文件
解决办法:创建文件目录和文件,然后给Mysql用户赋权即可
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/
5. 修改密码
5.1 进入mysql的bin目录:cd /usr/local/mysql/bin
5.2 执行./mysql -u root -p,输入的密码为初始化数据库时的密码,详见上述步骤3.4,执行后显示mysql>即表示进入mysql成功
5.3 执行下述3个命令,修改密码并刷新权限
SET PASSWORD = PASSWORD(\'123456\');
ALTER USER \'root\'@\'localhost\' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;
5.4 重新登录
这时如果使用(navicat等工具)远程登录,会发现无法连接如下图
navicat下载:
链接:https://pan.baidu.com/s/1aknIUwy2L1Ws2uYL88COng
提取码:og7l
执行以下3个命令(先登录数据库)
use mysql #访问mysql库
update user set host = \'%\' where user = \'root\'; #使root能再任何host访问
FLUSH PRIVILEGES;
(如果不是使用阿里云云服务,到这里可以使用远程工具连接数据库成功)
因为我是在阿里云ECS上安装的mysql,所以必须要先去阿里云ECS实例上去打开3306端口,如下图、
授权对象写自己电脑的Ip地址即可
然后测试连接,连接成功,如下图
好了,到此,mysql就可以通过navicat或其它远程工具登录使用了。
只能说该踩的坑一个没少踩,希望后面的小伙伴少踩点坑,顺利安装成功!
题外话:
1.如果不希望每次都到bin目录下使用mysql命令则执行以下命令
ln -s /usr/local/mysql/bin/mysql /usr/bin
2.查看mysql日志文件命令(要先登录mysql):
show variables like \'general_log_file\';
3.重启mysql,报错,提示:ERROR! The server quit without updating PID file (/data/mysql/localhost.localdomain.pid).
查看了这个目录,发现并没有localhost.localdomain.pid这个文件
百度了一下这个文件的作用,以下是别人的解决办法:
1.localhost.localdomain.pid 保存的是MySQL所启动的后台服务进程的PID值,如果这个文件丢了,可以创建一些,然后把一个数字放入其中。 2./tmp/mysql.sock 文件的作用是 MySQL通过这个unix socket 文件来与本地的客户端进行通信的。如果此文件丢了,可以通过重新启动服务器来重新创建它。 不建议将此文件放到 /tmp目录下。 丢失后在mysql的安装目录是没有*.pid,mysql.sock文件造成mysql无法重启,解决方法是重新创建hostname.pid文件 (1)ps -ef |grep mysql 找出mysql的进程,如:6225; (2)vi hostname.pid写入6225 (3)重新启动mysql正常.
于是新建localhost.localdomain.pid这个文件,然后重启,注意:新建后不能保存一个空文件,需要在里面输入一些数字
参考资料:
以上是关于Linux中安装mysql数据库详细步骤的主要内容,如果未能解决你的问题,请参考以下文章
在linux系统中安装virtualbox增强功能(增强包)的详细步骤