结合官方说明 CeontOS7 编译(源码)安装Mysql 5.7.28
在CSDN上看了很多帖子,发现做的时候都有各种各样的问题,
索性看官网文档好了
结论!编译安装需要查看官方说明,此方法为最快方法
附上官网参考链接
使用源码进行标准安装MYSQL
https://dev.mysql.com/doc/refman/5.7/en/installing-source-distribution.html
官方初始化数据目录
https://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization.html
源码配置选项
https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html#option_cmake_force_unsupported_compiler
2.10.2 Starting the Server(启动服务说明)
https://dev.mysql.com/doc/refman/5.7/en/starting-server.html
Step1下载源码包
官网下载很慢,如果有*会快很多,我已经下好了传到百度云大家自己下。
需要下载带有Boost版本的源码
下载地址
链接:https://pan.baidu.com/s/1EA2KRvT0OkWYfpfb3oi_QQ 密码:e2fm
step2解压
将源码上传到服务器,存放到你想要放的地址,我一般喜欢在根目录下新建一个源码包的目录便于日后管理
将源码包进行解压
tar xvf *.tar
Step3添加用户和用户组
useradd -s /sbin/nologin mysql
groupadd mysql
Step4开始配置编译文件
这段配置中需要特别注意-DWITH_BOOST,此文件在解压后的安装包中,注意地址是否正确,可以使用pwd命令然后复制过来
cmake -DWITH_BOOST=/SourceCode/mysql-5.7.28/boost/boost_1_59_0 -DCMAKE_INSTALL_PREFIX=/work/app/mysql -DMYSQL_DATADIR=/work/app/mysql/data -DMYSQL_TCP_PORT=3306 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1
step5开始编译
加上-j 4会快很多
make -j 4 && make install
step6 新建数据目录
新建数据以及日志目录,官网上的方式有权限问题暂时不理解为什么因此把存储文件放到根目录并给予mysql属组以及属主权限和755权限
mkdir -p /data/mysql/data
chown -R mysql:mysql /data/mysql
step7 添加my.cnf到/etc/my.cnf
我也不明白,mysql怎么连这个都不自动生成
vim /etc/my.cnf
my.cnf配置参考
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
user = mysql
basedir = /work/app/mysql
datadir = /data/mysql/data
pid-file = /data/mysql/mysql.pid
log_error = /data/mysql/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /data/mysql/mysql-slow.log
skip-external-locking
key_buffer_size = 32M
max_allowed_packet = 1024M
table_open_cache = 128
sort_buffer_size = 768K
net_buffer_length = 8K
read_buffer_size = 768K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
thread_cache_size = 16
query_cache_size = 16M
tmp_table_size = 32M
performance_schema_max_table_instances = 1000
explicit_defaults_for_timestamp = true
#skip-networking
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
log_bin=mysql-bin
binlog_format=mixed
server_id = 232
expire_logs_days = 10
early-plugin-load = ""
default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_buffer_pool_size = 128M
innodb_log_file_size = 32M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 768K
read_buffer = 2M
write_buffer = 2M
Step8 初始化服务
官方说明及翻译
Use the server to initialize the data directory, including the mysql database containing the initial MySQL grant tables that determine how users are permitted to connect to the server. For example:
使用服务去初始化数据目录,包括mysql数据库包含的初始化Mysql 授权表 限定 那些用户被许可去连接服务,例如这样。
说白了就是初始化服务
bin/mysqld --initialize --user=mysql
这一步有坑看下方说明
这一步如果没有权限乱七八糟的问题会有一个临时的密码产生,需要记下来。
如果没有看到就要在my.cnf中的 [mysqld]下添加skip-grant-tables
然后进入到mysql修改root密码,贼麻烦
mysql修改密码
官方中还有另一种初始化的方式,有兴趣可以自己去看
https://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization.html
Step9 启动服务
方法一、在后台运行服务,官方方式
bin/mysqld_safe --user=mysql &
方法二、通过mysql.sever来启动服务
通过support-file中的mysql.sever来启动服务
也可以将这个文件添加到系统服务中
support-files文件地址 /work/app/mysql/support-files
cp support-files/mysql.server /etc/init.d/mysql.server
启动服务命令/重启/关闭
/etc/init.d/mysql.server start/restart/stop
Step10 设置授权其它主机能登录mysql数据库
授权10.10.10.1主机用root用户,密码为123123 登录数据库
grant all on *.* to "root"@"10.10.10.1" identified by "123123";
授权所有主机可以用root用户远程登陆 ,密码是root
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
Step11 此时可以尝试连接mysql及通过navicat登录mysql
mysql -uroot -p
下一篇: qpOASES编译