ubuntu上用源码进行一键安装mysql
首先卸载原有的mysql:
首先查看自己的mysql有哪些依赖
#dpkg --list|grep mysql
先卸载
#sudo apt-get remove mysql-common
#sudo apt-get autoremove --purge mysql-server-5.0
再用dpkg --list|grep mysql查看,还剩什么就卸载什么
#dpkg --list|grep mysql
最后清楚残留数据:
#dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
#---------------------------------------------------------------------------------------------------------->>
接下来以root身份安装mysql,同时,需要下载带有boost的mysql源码,

选择带有boost的源码包

将源码包下载到/usr/local/src/之后,进入/usr/local/src/,然后将下面的脚本mysql.sh也放在/usr/local/src/目录下面,然后执行即可:
# sh mysql.sh

########################################################
########################################################
脚本内容如下:mysql.sh
#!/bin/bash
#su root
set -x
cd /usr/local/src
####################
###################设置使用mysql服务的用户和组
user_name="mysql"
user_group="mysql"
#######################################
#######################################设置你要安装的mysql版本 ,即你下载的文件
mysqlboost_name="mysql-boost-5.7.22"
mysql_name="mysql-5.7.22"
######################################
######################################设置mysql的配置文件
mycnf_file="/etc/my.cnf" basedir="/usr/local/mysql"
datadir="/usr/local/mysql/data"
socket="/usr/local/mysql/mysql.sock"
db_file="/usr/local/mysql/data/db_file"
tmpdir="/usr/local/mysql/data/tmpdir"
innodb_ts="/usr/local/mysql/data/innodb_ts"
innodb_log="/usr/local/mysql/data/innodb_log"
bin_log="/usr/local/mysql/data/bin_log"
undo_log="/usr/local/mysql/data/undo_log"
relay_log="/usr/local/mysql/data/relay_log"
error_log="/usr/local/mysql/error_log" apt-get update
apt-get -y install make cmake gcc gcc-c++ wget ncurses ncurses-devel openssl openssl-devel libaio libaio-devel bison bison-devel perl perl-devel groupadd ${user_group}
useradd -g ${user_group} ${user_name} mkdir -p ${basedir}
mkdir -p ${socket}
mkdir -p ${datadir}
mkdir -p ${boostdir}
mkdir -p ${db_file}
mkdir -p ${tmpdir}
mkdir -p ${innodb_ts}
mkdir -p ${innodb_log}
mkdir -p ${bin_log}
mkdir -p ${undo_log}
mkdir -p ${relay_log}
mkdir -P ${error_log}
touch ${error_log}/error.log
chown -R ${user_name}:${user_group} ${basedir} tar -pxzvf ${mysqlboost_name}.tar.gz
cd ${mysql_name}
cmake . -DCMAKE_INSTALL_PREFIX=${basedir} -DMYSQL_DATADIR=${db_file} -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost -DWITH_MYISAM_STORAGE_ENGINE= -DWITH_INNOBASE_STORAGE_ENGINE= -DMYSQL_TCP_PORT= -DENABLED_LOCAL_INFILE= -DWITH_EMBEDDED_SERVER=OFF -DENABLED_LOCAL_INFILE= -DWITH_PARTITION_STORAGE_ENGINE= -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii -DWITH_FEDERATED_STORAGE_ENGINE= -DWITH_BLACKHOLE_STORAGE_ENGINE= -DWITHOUT_EXAMPLE_STORAGE_ENGINE= -DWITHOUT_PARTITION_STORAGE_ENGINE= -DWITH_FAST_MUTEXES= -DWITH_DEBUG= -DWITH_EMBEDDED_SERVER=
make && make install
######################################
######################################配置my.cnf文件
if [ -f "${mycnf_file}" ];then
echo "exists ${mycnf_file}"
rm -rf ${mycnf_file}
else
touch ${mycnf_file}
chmod ${mycnf_file}
fi
# client
echo "[client]" > ${mycnf_file}
echo "port=3306" >> ${mycnf_file}
echo "default-character-set=utf8" >> ${mycnf_file}
echo "socket=/tmp/mysql.sock" >> ${mycnf_file} # server
echo "[mysqld]" >> ${mycnf_file}
##########################################初次安装,使用skip-grant-tables来跳过授权,当修改好密码后请自行去掉该项
echo "skip-grant-tables" >> ${mycnf_file}
echo "basedir=${basedir}" >> ${mycnf_file}
echo "port=3306" >> ${mycnf_file}
echo "datadir=${db_file}" >> ${mycnf_file}
echo "socket=/tmp/mysql.sock" >> ${mycnf_file}
echo "max_connections=2000" >> ${mycnf_file}
echo "default-storage-engine=INNODB" >> ${mycnf_file}
echo "max_allowed_packet=16M" >> ${mycnf_file}
echo "innodb_buffer_pool_size=128M" >> ${mycnf_file}
echo "explicit_defaults_for_timestamp=true" >> ${mycnf_file}
echo "[mysqld_safe]" >> ${mycnf_file}
echo "log_error=${error_log}/error.log" >> ${mycnf_file}
echo "sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES" >> ${mycnf_file}
##############################################
##############################################拷贝mysql服务端的启动脚本
if [ -f "/etc/init.d/mysql-server" ];then
echo "/etc/init.d/目录中已经存在mysql-server文件,马上进行先删除,再拷贝"
rm -rf /etc/init.d/mysql-server
cp ${basedir}/support-files/mysql.server /etc/init.d/mysql-server
else
cp ${basedir}/support-files/mysql.server /etc/init.d/mysql-server
fi
#############################################
############################################修改环境变量配置
cat /etc/profile|grep ${basedir}/bin
if [ $? == ];then
echo "PATH 已经存在该路径"
else
echo "export PATH=${basedir}/bin:${PATH}" >> /etc/profile
fi
source /etc/profile
chown -R ${user_name}:${user_group} ${basedir}
#################################
#################################通过配置文件来初始化服务器
${basedir}/bin/mysqld --defaults-file=/etc/my.cnf --initialize --basedir=${basedir} --datadir=${db_file} --user=mysql ################################
################################启动服务器
service mysql-server restart
ps -ef |grep mysql
##############################
##############################配置开机自启动
接着需要配置/etc/my.cnf文件,配置如下:
[client]
port=
default-character-set=utf8
socket=/tmp/mysql.sock
[mysqld]
#skip-grant-tables
basedir=/usr/local/mysql
port=
datadir=/usr/local/mysql/data/db_file
socket=/tmp/mysql.sock
max_connections=
default-storage-engine=INNODB
max_allowed_packet=16M
innodb_buffer_pool_size=128M
explicit_defaults_for_timestamp=true
[mysqld_safe]
log_error=/usr/local/mysql/data/error.log
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
然后到/usr/local/mysql/bin目录下执行初始化操作:
1 ./mysqld --defaults-file=/etc/my.cnf
结果如下:
root@mi-OptiPlex-:/usr/local/mysql/bin# ./mysqld --defaults-file=/etc/my.cnf --initialize --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/db_file/ --user=mysql
--02T06::.153186Z [Warning] InnoDB: New log files created, LSN=
--02T06::.485746Z [Warning] InnoDB: Creating foreign key constraint system tables.
--02T06::.672726Z [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 2b277af4-cd4c-11e9-b986-8cec4bcad6ac.
--02T06::.720865Z [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
--02T06::.722060Z [Note] A temporary password is generated for root@localhost: 1SjpD:qZ0VrN
初始化注意事项:
1.如果出现如下信息:unknown variable 'defaults-file=/etc/my.cnf',请保证--defaults-file配置选项在最前面。
2.初始化最后一行是root用户密码(root@localhost: ,5j1Qj_LLAek)如图:
# service mysql-server start
#service mysql-server restart
#service mysql-server stop
# mysql -u root -p

ubuntu上用源码进行一键安装mysql的更多相关文章
- 在 Ubuntu 上使用源码安装 OpenResty
镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 本文将介绍如何在 Ubuntu 上使用源码安装 OpenResty. 目标 Ubuntu 18.04 OpenResty 1.19.3.2 安装依 ...
- CentOS 7.2使用源码包编译安装MySQL 5.7.22及一些操作
CentOS 7.2使用源码包编译安装MySQL 5.7.22及一些操作 2018年07月05日 00:28:38 String峰峰 阅读数:2614 使用yum安装的MySQL一般版本比较旧,但 ...
- 使用Notepad++远程编辑Ubuntu上的源码
简单搭建了在Windows上远程编辑Ubuntu Server 14.04上面源代码的环境,记录一下,给需要的人. Notepad++安装NppFTP 从插件菜单打开PluginManager,选中N ...
- CentOS 7.4 使用源码包编译安装MySQL 5.7.20
使用yum安装的MySQL一般版本比较旧,但是运行稳定.如果想要尝试最新的功能或者需要指定特殊的功能的话,就需要手工进行编译安装了. 一.下载安装包 (一).先下载MySQL源码,网址为:https: ...
- RHEL5.8上SAMBA源码修改打包安装流程
之前一直使用系统自带的SAMBA,近期需要对SAMBA代码做一些修改,然后还是打算用RPM包的方式来安装部署. 这个流程本身不复杂,在这里记录下来,免得在另外写说明文档. 关键词:RHEL5.8, s ...
- 简单说说Ubuntu利用bzr源码安装OpenERP7.0的操作步骤
1.修改Ubuntu国内更新源,具体方法自己baidu.google. 修改更新源后,更新系统 sudo apt-get update sudo apt-get upgrade 复制代码 2.安装Po ...
- Ubuntu 环境 TensorFlow (最新版1.4) 源码编译、安装
Ubuntu 环境 TensorFlow 源码编译安装 基于(Ubuntu 14.04LTS/Ubuntu 16.04LTS/) 一.编译环境 1) 安装 pip sudo apt-get insta ...
- [笔记] Ubuntu 18.04源码安装caffe流程
虽然Ubuntu 18.04可以通过apt安装caffe,但是为了使用最新的代码,还是值得从源码安装一遍的. 安装环境 OS: Ubuntu 18.04 64 bit 显卡: NVidia GTX 1 ...
- 【随笔】从gitHub上获取源码
有时候,需要从gitHub上获取源码,下面介绍几个方法: 1.获取链接: 打开gitHub代码库的页面,能在右边看到这个: 点击红圈里的标记,该链接就会复制下来. 然后,如果安装了小乌龟(Tortoi ...
随机推荐
- DataGridView绑定DataTable的正确姿势
1. 将DataTable 绑定到BindingSource 2. 将BindingSource绑定到DataGridView 3. DataGridView修改完要从Datatable取值时,同步过 ...
- BeanUtils工具类copyProperties方法缺点及解决
使用类为spring-beans:4.3.13release包中的 org.springframework.beans.BeanUtils BeanUtils.copyProperties(Objec ...
- java基础之二维数组-杨辉三角
首先呢你要知道什么是杨辉三角? 答:杨辉三角,是二项式系数在三角形中的一种几何排列. 简单的说一下就是两个未知数和的幂次方运算后的系数问题,比如(x+y)的平方=x的平方+2xy+y的平方,这样系数就 ...
- css3之2D 转换
浏览器支持 表格中的数字表示支持该属性的第一个浏览器版本号. 紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号. Chrome 和 Safari 要求 ...
- C++标准输入问题
1.读取数据量不定的输入数据 e.g. #include <iostream> using namespace std; void main() { ,val=; while(cin> ...
- [Day4] Nginx Http模块二
一. POST_READ阶段 1. 用户ip在http请求中的传递? 前提:Tcp连接四元组(src ip,src port,dst ip,dst port) HTTP头部 X-Formard ...
- Linux内核源码真是个好东西
我突然发现,我是这么爱Linux内核源码.... 真幸福死了.... int vsprintf(char *buf, const char *fmt, va_list args) 这函数的实现 ...
- StopWatch 监控Java代码运行时间和分析性能
背景 有时我们在做开发的时候需要记录每个任务执行时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观,如果想对执行的时间做进 ...
- TZOJ 5986 玄武密码(AC自动机)
描述 在美丽的玄武湖畔,鸡鸣寺边,鸡笼山前,有一块富饶而秀美的土地,人们唤作进香河.相传一日,一缕紫气从天而至,只一瞬间便消失在了进香河中.老人们说,这是玄武神灵将天书藏匿在此. 很多年后,人们终于在 ...
- Leetcode264. Ugly Number II丑数2
编写一个程序,找出第 n 个丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 ...