查看 ubuntu 版本
lsb_release -a
选 source code
下面有很多版本, 选择Generic Linux (Architecture Independent), Compressed TAR Archive 这个版本
-
编译的工具
gcc
cmake -
编译过程
假设源码解压后文件夹名为mysql
cd mysql
mkdir bld
cd bld
mkdir –p target/data
mkdir –p target/mysql
mkdir boost
cmake ..
-DCMAKE_INSTALL_PREFIX=/home/lindt
-DMYSQL_DATADIR=/home/lindt/data/
-DMYSQL_UNIX_ADDR=/home/lindt/bin/mysql.sock
-DDOWNLOAD_BOOST=1
-DWITH_BOOST=/home/lindt/boost
-DWITH_DEBUG=1
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_bin
-DWITH_EXTRA_CHARSETS:STRING =all
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_INNODB_MEMCACHED=ON
-DWITH_EMBEDDED_SERVER=OFF
-DWITHOUT_NDBCLUSTER_STORAGE_ENGINE=1
-DENABLED_LOCAL_INFILE=1
-DCMAKE_BUILD_TYPE=debug
-DCMAKE_C_FLAGS="-o0 -g3"
-DCMAKE_CXX_FLAGS="-o0 -g3"
-DCMAKE_C_FLAGS_DEBUG="-o0 -g3"
-DCMAKE_CXX_FLAGS_DEBUG="-o0 -g3"
make
make install
cmake 编译问题
apt-get update
apt-get install cmake
apt-get install bison
apt-get install library*
apt-get install libncurses5-dev
apt-get install g++
apt-get install kdelibs5-dev
apt-get install make
更新以下packets
- 配置运行
切换到root用户
useradd mysql
cd target/mysql
chown –R mysql:mysql .
//为了方便,将指定配置文件my.cnf, 我放在附件里, 将这个文件放在 mysql/bld/target/mysql目录下, 里面写的绝对路径要相应改回来
初始化一些基础库
bin/mysqld --defaults-file=my.cnf --initialize-insecure --user=mysql
使用源码安装的mysql,请确认/etc/mysql/my.cnf是否存在,如果存在请删除,这部导致老有路径问题
unknown variable 'default-file=my.cnf' --defaults-file 要在最前面
bin/mysql_ssl_rsa_setup
chown –R root .
chown –R mysql:mysql ../data
my.cnf
[client]
port = 3307
socket = /home/zhangcb/Lab/mysql/src/bld/target/data/mysqld.sock
basedir = /home/zhangcb/Lab/mysql/src/bld/target/mysql
datadir = /home/zhangcb/Lab/mysql/src/bld/target/data
socket = /home/zhangcb/Lab/mysql/src/bld/target/data/mysqld.sock
port = 3307
server_id = 1
pid-file = /home/zhangcb/Lab/mysql/src/bld/target/data/mysqld.pid
bind-address = 127.0.0.1
log_error = /home/zhangcb/Lab/mysql/src/bld/target/data/error.log
log_bin = /home/zhangcb/Lab/mysql/src/bld/target/data/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
下面可以运行了
带密码初始化
./bin/mysqld --defaults-file=/home/lindt/etc/my.cnf --initialize --user=golden_lindt //--user 当前用户
不带密码初始化
./bin/mysqld --defaults-file=/home/lindt/etc/my.cnf --initialize-insecure --user=golden_lindt
启动
bin/mysqld_safe --defaults-file=/home/lindt/my.cnf &
关闭
mysqladmin -hlocalhost -uroot -p'xxx' -P5528 shutdown
用户修改密码
grant all on . to 'root'@'%' identified by 'db10';
grant all on . to 'root'@'10.46.180.10' identified by 'db10$';
flush privileges;
插件安装
install plugin rpl_semi_sync_master_soname 'semisync_master.so'
install plugin rpl_semi_sync_slave_soname 'semisync_slave.so'
启动及查看
set global rpl_semi_sync_master_enabled =1;
set global rpl_semi_sync_slave_enabled =1;
select * from mysql.plugin;
创建rpl用户及复制
grant Replication client,Replication slave,Create routine,Create,Insert,Update,Delete,Drop,Select on . to 'repl'@'%' identified by 'repl' with grant option;
CHANGE MASTER TO MASTER_HOST='192.168.0.1',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_PORT=5528;
客户端 –initialize-insecure 初始化的时候没加密码 所以直接回车就可以
bin/mysql --defaults-file=my.cnf -hlocalhost -uroot –p
---我并未输入密码,而是直接回车,因为之前用的参数是--initialize-insecure
调试 编译的时候编的是debug的版本
先找到服务器的进程号, 比如下面的
23543 pts/5 00:00:00 mysqld_safe
2 3766 pts/5 00:00:01 mysqld
启动gdb
gdb
attach到服务端的进程
attach 2 3766
下面可以设置断点(比如)
b mysql_parse
网友评论