centos下源码安装mysql5.7

之前一直用lnmp装个mysql

因项目原因,客户不能上外网,于是研究一下如何源码编译安装mysql好了。顺便学习一下这个过程。后续有时间再自己搞一个简单的数据库项目,从零做一个简单的数据库出来,把数据结构,网络通信,练下手,温习一下

废话少说。。进入正题

下载一个mysql5.7

https://www.centos.org/download/ 

 安装一下依赖包。主要bison,其实大部分数据库,都是应用这个库来做基础库实现的。

yum install -y  gcc gcc-c++ cmake ncurses ncurses-devel bison

https://dev.mysql.com/downloads/mysql/5.7.html#downloads

#下载后,直接解压到 /usr/local/mysql  ,没有此目录就直接创建即可
cd /usr/local
mkdir mysql   


tar -zxvf mysql-boost-5.7.31.tar.gz -C /usr/local/mysql/


 切换到/usr/local/mysql 目录下,编译安装

 

cmake -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost

可能要些时间,大致的意思,慢慢让他慢慢的编译 

 

make && make install
useradd -s /sbin/nologin mysql  #添加用户


mkdir -p /usr/local/mysql/var/data     #创建文件路径 

chown -R mysql:mysql /usr/local/mysql/var/data  赋于权限


cd /usr/local/mysql/var/

echo ''>mysql-error.log    #创建一个文件 

chmod -R 777 mysql-error.log  #赋于权限

 

编辑/etc/my.cnf ( 如果没有则创建)

主要把相关文件统一放到var目录

[client]
port        = 3306
socket      = /tmp/mysql.sock

[mysqld]
port        = 3306
socket      = /tmp/mysql.sock
user = mysql


basedir = /usr/local/mysql
datadir = /usr/local/mysql/var/data
pid-file= /usr/local/mysql/var/mysql.pid

log_error = /usr/local/mysql/var/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /usr/local/mysql/var/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

把数据库数据目录用户和组更改为mysql ( 数据库数据目录:/data/mysql/data),方法同上!
注:/usr/local/mysql/var/data目录下一定要为空才行

 

cd /usr/local/mysql/bin

./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var/data

 

[root@localhost mysql]# ls
archive_output_directory  config.h.cmake           include               make_dist.cmake  README-test       unittest
bin                       configure.cmake          info_macros.cmake     Makefile         regex             var
boost                     CPackConfig.cmake        INSTALL               man              scripts           VERSION
BUILD                     CPackSourceConfig.cmake  install_manifest.txt  mysql-test       share             VERSION.dep
client                    CTestTestfile.cmake      lib                   mysys            source_downloads  vio
cmake                     dbug                     libbinlogevents       mysys_ssl        sql               win
CMakeCache.txt            docs                     libbinlogstandalone   packaging        sql-common        zlib
CMakeFiles                Docs                     libmysql              plugin           storage
cmake_install.cmake       Doxyfile-perfschema      libmysqld             probes_mysql.o   strings
CMakeLists.txt            extra                    libservices           rapid            support-files
cmd-line-utils            find_libevent_version.c  LICENSE               README           testclients
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql]# 
cd /usr/local/mysql
 
cp support-files/mysql.server /etc/init.d/mysqld

chmod -R 777 /etc/init.d/mysqld
echo ''>/usr/local/mysql/var/mysql.pid  #创建一个文件并写入空

chmod -R 777 /usr/local/mysql/var/  #整个赋值权限

service mysqld start   #启动服务,见证奇迹的时候到了

service mysqld stop  #停止服务
[root@localhost mysql]# service mysqld start
Starting MySQL SUCCESS! 
[root@localhost mysql]# 
cd /usr/local/mysql/bin

#不需要输入密码,直接进入
./mysql -hlocalhost -uroot -p

[root@localhost bin]# ./mysql -hlocalhost -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 21490
Server version: 5.7.31-log Source distribution

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> 
修改环境变量
在/etc/profile 中新增一行

vim /etc/profile

PATH=/usr/local/mysql/bin:$PATH

保存退出

让当前生效

source /etc/profile

设置开机自启动

systemctl enable mysqld

[root@localhost bin]# vim /etc/profile
[root@localhost bin]# source /etc/profile
[root@localhost bin]# systemctl enable mysqld
mysqld.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig mysqld on
[root@localhost bin]# 

 由于密码是空,因此,进入mysql后,修改密码为bst@1234即可

选择数据库:use mysql;

更新root的密码:update user set authentication_string=password('bst@1234') where user='root' and Host='localhost';

刷新权限:flush privileges;

如果忘记密码了怎么办?

 

  1. 关闭服务
  2. /etc/my.cnf 中的[mysqld]下添加 skip-grant-tables
  3. 在/usr/local/mysql/bin/mysqld --skip-grant-tables,启动应用
  4. 在另外一个地控制台输入 ./mysql -hlocalhost -uroot -p  进入,然后
选择数据库:use mysql;

更新root的密码:update user set authentication_string=password('bst@1234') where user='root' and Host='localhost';

设置远程访问

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'bst@1234' WITH GRANT OPTION;

刷新权限:flush privileges;

 搞完后,再逆向恢复my.cnf ,删除skip-grant-tables或#skip-grant-tables 注解也可以 ,再重新启动mysql即可

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值