一次mysql源码安装
一次mysql
源码安装
-
需要准备的条件
cmake
gcc
boost1.59.0
-
这里贴出我对应的依赖版本
-
mysql
版本对应的依赖boost
版本必须要匹配,编译过程如果有报错信息boost
要求对应的版本 -
这里选择的是
mysql5.7.17
,mysql源码链接 -
boost
对应的版本库,选择需要的版本对应download
就行,boost版本 -
下载对应好需要的依赖就行,就开始解压过程,以
mysql
源码为例子cd /home/soft/ wget https://github.com/mysql/mysql-server/archive/mysql-5.7.17.tar.gz tar xzfv mysql-5.7.17.tar.gz
-
这个时候需要给
mysql
一些文件权限,不然mysql
如何操作文件呢?cd mysql-server-mysql-5.7.17/ groupadd mysql useradd -r -g mysql -s /bin/false mysql
-
配置
mysql
预编译参数-
创建
mysql
数据存储目录mkdir -p /usr/local/mysql/data
-
预编译参数(根据自身依赖的情况,去选择文件路径)
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DWITH_BOOST=/data/soft/boost_1_59_0 \ -DSYSCONFDIR=/etc \ -DEFAULT_CHARSET=utf8mb4 \ -DDEFAULT_COLLATION=utf8mb4_general_ci \ -DENABLED_LOCAL_INFILE=1 \ -DEXTRA_CHARSETS=all
-
编译并安装
make -j `grep processor /proc/cpuinfo | wc -l` make install
-
编译完成后
cd /usr/local/mysql chown -R mysql:mysql . # 注意:MySQL 5.7.6之前的版本执行这个脚本初始化系统数据库 ./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data chown -R root . chown -R mysql data chmod -R 777 data
-
新建配置文件
vim /etc/my.cnf
-
新建日志文件
mkdir -p /usr/local/mysql/log cd /usr/local/mysql/log touch mysql_error.log touch mysql_slow.log cd .. chown -R mysql log chmod -R 777 log
-
配置文件内容
innodb_buffer_pool_size
注意下 看自己内存有多少,再分配,以防内存不够报错。skip-grant-tables
这里跳过mysql
验证的配置,方便我们到时候改密码,这里可以使用cat > /etc/my.cnf << EOF
粘贴配置文件,最后输入EOF
结尾 -
[client] port=3306 socket=/usr/local/mysql/mysql.sock [mysqld] character-set-server=utf8 collation-server=utf8_general_ci skip-external-locking skip-name-resolve skip-grant-tables federated explicit_defaults_for_timestamp = 1 user=mysql port=3306 basedir=/usr/local/mysql datadir=/usr/local/mysql/data tmpdir=/usr/local/mysql/temp # server_id = ..... socket=/usr/local/mysql/mysql.sock log-error=/usr/local/mysql/log/mysql_error.log pid-file=/usr/local/mysql/mysql.pid open_files_limit=10240 back_log=600 max_connections=500 max_connect_errors=6000 wait_timeout=605800 #open_tables=600 #table_cache = 650 #opened_tables = 630 max_allowed_packet=32M sort_buffer_size=4M join_buffer_size=4M thread_cache_size=300 query_cache_type=1 query_cache_size=256M query_cache_limit=2M query_cache_min_res_unit=16k tmp_table_size=256M max_heap_table_size=256M key_buffer_size=256M read_buffer_size=1M read_rnd_buffer_size=16M bulk_insert_buffer_size=64M lower_case_table_names=1 default-storage-engine=INNODB innodb_buffer_pool_size=1G innodb_log_buffer_size=32M innodb_log_file_size=128M innodb_flush_method=O_DIRECT ##################### #thread_concurrency=32 long_query_time=2 slow-query-log=on slow-query-log-file=/usr/local/mysql/log/mysql_slow.log [mysqldump] quick max_allowed_packet=32M [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
-
配置
mysql
服务cp support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld # 添加到系统服务 chkconfig mysqld on # 开机启动
-
接下来我们就可以使用
systemctl start mysqld
启动服务了,但是每个人安装不一样,总会有不同的报错,这个时候看下tail -f /var/log/mysqld.log
看下对应报啥错,有时候大多是忘记设计权限了systemctl restart mysqld -- 重启mysql systemctl stop mysqld -- 停止mysql服务 systemctl status mysqld -- 查看mysql服务状态 systemctl daemon-reload -- 如果重新设置了服务,可以使用这个重载一下
-
配置一下可以直接使用
mysql
的命令吧vim /etc/profile export PATH=$PATH:/usr/local/mysql/bin source /etc/profile
-
接下来就是更改密码了
-
因为我们配置了
skip-grant-tables
,所以第一次认证,直接使用这样的mysql -uroot -p 回车
-
设置新密码
-
use mysql; update user set authentication_string=password('新密码') where user='root'; flush privileges;
-
注意把
skip-grant-tables
注释掉,重新启动mysql
服务 -
重新编译记得清下编译的时候的缓存文件
cd /data/soft/mysql rm -f CMakeCache.txt make clean
-
-
mysql
安装完毕,接下来查看下mysql
进程ps -aux | grep mysql
-
一些报错产生的原因,可以参考这个博客,报错原因