Linux虚拟机安装Mysql5.7.25

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

virtualbox虚拟机

搭配vagrant创建linux虚拟机,yum安装相关依赖,尤其nginx的pre、openssl、zlib等,mysql的libaio等
复制代码

环境配置

  • psftp传输工具,win系统与linux之间文件的传输
  • putty连接工具,登录linux服务器
  • linux选择的是vagrant认识的centos7.box纯净版

安装mysql

rpm -qa|grep mysql
如有数据则卸载:
rpm -e mysql-libs-****

检查mariadb同上操作
复制代码
  • 安装包:本地下载再上传linux或者linux下载亦可
cd /opt/
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
复制代码
  • 解压:tar zxvf mysql-5.7.25-****
  • 重命名:mv mysql-5.7.25-*** /usr/local/mysql
  • 检查用户和mysql组是否存在
cat /etc/group |grep  mysql
cat /etc/passwd |grep mysql

存在则删除,否则创建
删除操作:groupdel /userdel
创建操作:
groupadd mysql
useradd -r -g mysql mysql
tips:-r参数表示mysql是系统用户不可以用来登录系统
复制代码
  • 创建数据库目录:
进入mysql目录:cd /usr/local/mysql
mkdir data
将mysql的所有者及所属组改为mysql
chown -R mysql:mysql /usr/local/mysql
复制代码
  • 创建数据库配置文件
在support-files目录下创建my_default.cnf
编辑内容如下:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
 
 
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
 
basedir = /usr/local/mysql
datadir = /data/myqsldb
port = 3306
socket = /tmp/mysql.sock # 不要改到其他目录
character-set-server=utf8
 
log-error = /usr/local/mysql/mysqld.log
pid-file = /usr/local/mysql/mysqld.pid
复制代码
  • 拷贝到/etc目录下:cp support-files/my_default.cnf /etc/my.cnf
  • 初始化mysqld,即生成数据库文件
cd /usr/local/mysql

./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysqldb --pid-file=/usr/local/mysql/mysqld.pid
复制代码
  • 找到日志路径查看日志,得到临时密码:cat mysqld.log最后一行
  • 将启动脚本放到开机初始化目录:cp support-files/mysql.server /etc/init.d/mysql
  • 启动服务:service mysql start
  • 登录mysql,使用临时密码:./bin/mysql -uroot -p
mysql> set password=password('vagrant');
mysql> grant all privileges on *.* to root@'%' identified by 'vagrant';
mysql> flush privileges;
复制代码
  • 添加mysql远程访问权限
mysql> use mysql;
mysql> update user set host='%' where user = 'root';
mysql> flush privileges;
复制代码
  • 重启mysql生效

linux安装mysql过程中遇到的问题

初始化过程中提示缺少libaio依赖
解决办法:yum install -y libaio
复制代码
初始化数据库失败,没有生成data/数据文件;Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn'
确认初始化参数是否缺失或者正确:--initialize
复制代码
登录mysql时,提示‘/tmp/mysql.sock’
首先确认是否mysql成功,没有生成文件
再次就是在配置文件中指定了生成目录,再创建一个软链到/tmp/目录下
复制代码
用navicat连接数据库报错:1130-host'gateway
原因:因为在数据库服务器中的mysql数据库中的user的表中没有权限
解决办法:
update user set Host='%' where User='root';
flush privileges;
复制代码