前言
mysql安装方法有很多种,这里主要记录windows系统zip格式安装和 linux 源码编译的安装
- windows版 mysql大概是5.7.11以上的绿色版 解压就后没有了my.default的配置文件如果没有就手动创建
- linux编译需要boost库(推荐),等,官网也有带boost库的mysql源码文件编译时可以不指明boost库
- 关于编译参数路径要统一,my.cnf中可以指明启动服务加载的pid,sock。但客户端连接时会有找不到sock的错误,如果确定sock生成尝试在-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock 编译的路径下创建sock的软连接。
- linux mysql安装后通过basedir/bin/mysqld在datadir/初始化各种实例
- mysql加载my.cnf 顺序为:/etc; ?/etc/mysql; ?/usr/local/mysql/etc/ 其它位置需要使用 #-defaults-file来指明。
- 使用systemctl 管理mysql启动时可能会有连接超时的错误 ,把type=forking和PIDFile=path注释掉就好
- centos7 最好先关闭防火墙。会有bad port的错误
准备
windows卸载
- windows版 /bin net stop msyql --停止服务
- mysqld --remove [mysql] --卸载服务
linux卸载
-
#rpm -qa| grep -i mysql --查看通过rpm 安装的mysql
-
#yum -y remove mysql-* --卸载
-
#find / -name mysql --查找mysql相关文件
-
# rm -rf file --逐条删除或者 #find / -name mysql|xargs rm -rf
-
#rpm -qa|grep mariadb --查找系统自带的 mariadb相关包
-
#rpm -e file --卸载
安装
- windows系统安装
- 解压文件
- 在解压的根目录创建mysql启动文件 my.ini如下:
[mysqld]
basedir=yourpath
datadir=yourpath --data目录必须为空,也可删除
port=3306
character_set_server=utf8 - /bin/ mysqld --initialize-insecure --免密码初始化
- mysqld --install 服务名 --完成安装
- mysqld --remove 服务名 --卸载
- 基于centos7系统安装(大致分两步)
安装依赖
- 下载1.59以上的boost库最好不要使用yum安装,版本太低。下载后不安装也行,记住路径,编译时要用
- yum install -y gcc gcc-c++ ncurses ncurses-devel bison libgcrypt perl cmake
第一步 解压文件,创建编译脚本,编译安装
-
#tar -xf mysql-5.7.20.tar.gz --解压文件
-
#cd mysql-5.7.20(解压的目录)
-
#vi cmake.sh ----创建编译脚本写入如下参数准备编译详情
!/bin/bash
cmake .
-DCMAKE_INSTALL_PREFIX=/home/mysql \ -- 安装的目录
-DMYSQL_DATADIR=/home/mysql/data \ --数据库目录
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock \ --客户端连接的sock文件
-DSYSCONFDIR=/home/mysql/etc \ --配置文件目录
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DMYSQL_TCP_PORT=3306 \ --端口
-DDEFAULT_CHARSET=utf8 \ --字符集
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS=all
-DDOWNLOAD_BOOST=1 \ --下载boost库,如果带boost库的源码可以不下载
-DWITH_BOOST=yourboost \ --指定你下载的boost库路径网上说可以不用的,我没有成功
-DMYSQL_USER=mysql --用户
-
#bash cmake.sh --执行脚本如图表示成功
-
#make && make install --进行编译安装如果编译失败就删掉编译缓存的文件重新编译
-
到此mysql安装的目录会有相关文件生成,查看bin目录会有很多可执行的脚本,通过mysql/mysqld/mysqladmin/mysql_safe 等等执行脚本完成全部安装,配置多实例。
第二步 创建用户,用户组,和相关目录准备mysql初始化/配置多实例
-
#groupdd mysql --创建mysql用户组
-
#useradd -g mysql mysql --为mysql组添加mysql用户 (可省略)
-
#mkdir -p mysql/{data,logs,etc} --创建mysql 安装目录,数据库初始化数据目录,日志目录,配置文件目录
-
#chown -R mysql:mysql /home/mysql --把安装目录交给mysql用户
-
#vi /home/mysql/my.cnf --编写my.cnf脚本
[mysqld]
port=3306
dasedir=/home/mysql --mysql安装目录
datadir=/home/mysql/data --mysql初始化目录
user=mysql
[client]
socket=/home/mysql/mysql.sock----指定端登录进来去哪里找sock文件
-
#cd bin --进入mysql安装的bin目录
-
#./mysqld --initialize --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data -- 执行数据库初始化
-
# ./mysqld --defaults-file=/home/mysql/my.cnf --测试是否可以启动mysql服务
还可以使用 ./mysql_safe --user=mysql --defaults-file=/home/mysql/my.cnf 或者在 /etc/init.d目录创建mysql.server的软连接时候用service start/stop来启动(并不推荐)mysql4种启动方法
-
#./mysqladmin -uroot -p shutdown --停止服务完成后续步骤。
如果无法回到命令行使用 Ctrl+\ /即可 此时mysqld的服务就结束了,并不会后台运行。
-
#vi /usr/lib/systemd/system/mysqld.service --编写mysql启动脚本使用systemd 来管理(推荐)
[Unit] --主要包括对服务的说明可省略
Description=MySQL Server --描述
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target --描述服务类别
[Service] --是服务的关键 execstart/stop/reload指定启动/停止/重启,
Type=forking --后台的形式运行
PIDFile= --存放pid的位置
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/home/mysql/my.cnf --启动
ExecReload= --重启
ExecStop= --停止
LimitNOFILE = 5000
User=mysql
Group=mysql
[Install] --安装服务的相关设置
WantedBy=multi-user.target
-
#systemctl daemon-reload -- 加载更改的单元
-
#systemctl enable mysqld --开机启动
-
#systemctl start mysqld --启动
到此mysql已经安装完成!
登陆
开启公共端口 ,创建用户远程登陆
-
# firewall-cmd --zone=public --add-port=3306/tcp --permanent
-
# firewall-cmd --reload
修改密码,添加用户远程登陆详情
-
set password = password('yourpassword')
-
如果不是用初始密码登陆比如--skip-grant-tables 参数 可以如下修改
-
# show variables like '%char%'; //查看字符集
-
# set character_set_client/.....=utf8 //如果配置文件中错误可以通过命令设置
-
#show databases;
-
#use mysql;
-
#show tables;
-
# select host,user form user; --查看用户登陆的权限
-
#grant all privileges on databasename.tablename to 'username'@'host' identified by 'youpassword' --创建username用户在databasename库tablename表 进行增删该查操作。databasename/tablename 用 * 代替,代表所有库/表。host为% 允许所有连接。
-
#flush privileges --刷新
- 到此mysql 修改密码远程登陆已经完成。
配置多实例
-
#cd /home/mysql/data/ -- 进入datadir 的目录
-
#mkdir -p data3307/{data,log} --创建3307实例的data目录
-
#cd data3307 && vi my.cnf --创建my.cnf 文件,指定basedir,datadir,pid,sock的路径
-
#chown -R mysql:mysql data3307 --更改为mysql为所有者和组
- 进入basedir/bin下 执行初始化 同上,注意加载的是另一个my.cnf
-
通过.sock文件来登陆不同的实例
-
vi /usr/lib/systemd/system/mysqld3307.service 写入启动的service单元
-
#firewall-cmd --zone=public --add-port=3307/tcp --permanent(可省略) --开启端口
-
#systemctl daemon-reload /enable/start --开机启动
- 可以重复以上,配置更多实例 到此mysql5.7.20 已经全部结束!
错误总结
-
sock 连接错误!检查编译的路径是否和配置统一。或者在错误的路径创建目标sock的软连接
-
bad port的错误!暂时未解决
-
如果启动连接超时,日志又没有报错则注释掉Tyep 、Pidfile 试试。
到此结束后续更新 ---