热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql5.8my.cnf,mysql5.7,5.8源码安装

#MySQL5.7及以上的版本,在编译安装之前需要安装boost,因为高版本mysql需要boots库的安装才可以正常运行。#否则会报CMakeErroratcmak

#MySQL5.7及以上的版本,在编译安装之前需要安装boost,因为高版本mysql需要boots库的安装才可以正常运行。#否则会报CMake Error at cmake/boost.cmake:81错误

1.下载mysql ,这里官网下载含boost的源码包 直接用即可 无需另外在下载boost

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.25.tar.gz

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.28.tar.gz

5.8下载地址

下载地址:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.28.tar.gz

国内镜像:http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-boost-5.7.28.tar.gz

1

2

3

4

5

6

7

wgethttps://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.25.tar.gz

wgethttps://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.28.tar.gz

5.8下载地址

下载地址:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.28.tar.gz

国内镜像:http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-boost-5.7.28.tar.gz

安装所需依赖支持

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

1

2

yum-yinstallgccgcc-c++ncursesncurses-develcmakeopenssl-devel

添加用户

useradd -s /sbin/nologin mysql

1

useradd-s/sbin/nologinmysql

建立所需目录并更改所有者为mysql

mkdir -p /data/mysql/data

chown -R mysql:mysql /data/mysql

1

2

mkdir-p/data/mysql/data

chown-Rmysql:mysql/data/mysql

将下载好的mysql 解压到/usr/local/mysql 目录下

#没有目录自己创建

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

1

2

#没有目录自己创建

tar-zxvfmysql-boost-5.7.25.tar.gz-C/usr/local/mysql/

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

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

1

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

第二种编译安装方式:

cd mysql-5.7.28

cmake . \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DWITH_BOOST=boost \

-DMYSQL_DATADIR=/data/mysql/ \

-DMYSQL_USER=mysql \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \

-DWITH_EXTRA_CHARSETS=all \

-DWITH_DEBUG=0 \

-DWITH_READLINE=1 \

-DWITH_SSL=system \

-DWITH_ZLIB=system \

-DWITH_LIBWRAP=0 \

-DENABLED_LOCAL_INFILE=1 \

-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \

-DDEFAULT_CHARSET=utf8mb4 \

-DDEFAULT_COLLATION=utf8mb4_general_ci

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

第二种编译安装方式:

cdmysql-5.7.28

cmake.\

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\

-DWITH_BOOST=boost\

-DMYSQL_DATADIR=/data/mysql/\

-DMYSQL_USER=mysql\

-DWITH_INNOBASE_STORAGE_ENGINE=1\

-DWITH_ARCHIVE_STORAGE_ENGINE=1\

-DWITH_BLACKHOLE_STORAGE_ENGINE=1\

-DWITH_PARTITION_STORAGE_ENGINE=1\

-DWITHOUT_MROONGA_STORAGE_ENGINE=1\

-DWITH_EXTRA_CHARSETS=all\

-DWITH_DEBUG=0\

-DWITH_READLINE=1\

-DWITH_SSL=system\

-DWITH_ZLIB=system\

-DWITH_LIBWRAP=0\

-DENABLED_LOCAL_INFILE=1\

-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock\

-DDEFAULT_CHARSET=utf8mb4\

-DDEFAULT_COLLATION=utf8mb4_general_ci

3375362132e75cbc0d0c0ada849be278.png

make && make install

1

make&&makeinstall

f6d9b3c01bf650a0681044b5e4ba5e21.png

安装好后的/usr/local/mysql 目录结构

8d43d5e654222473116033ed724cc1b6.png

配置

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

我这边的一个配置文件内容如下

[client]

port = 3306

socket = /tmp/mysql.sock

[mysqld]

port = 3306

socket = /tmp/mysql.sock

user = mysql

basedir = /usr/local/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 = "" #这个加密选项5.7之前没有这个功能,5.7之前版本不要开启

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

[client]

port=3306

socket=/tmp/mysql.sock

[mysqld]

port=3306

socket=/tmp/mysql.sock

user=mysql

basedir=/usr/local/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=""#这个加密选项5.7之前没有这个功能,5.7之前版本不要开启

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

chown -R mysql:mysql mysql

1

chown-Rmysql:mysqlmysql

把数据库数据目录用户和组更改为mysql ( 数据库数据目录:/data/mysql/data),方法同上!

be8ef200cc2df820bcf3100093a95246.png

#注:/data/mysql/data目录下一定要为空才行

#初始化mysql(5.6)

./scripts/mysql_install_db --basedir=/opt/mysql5.6.47/ --datadir=/data/mysql.5.6.47/data --user=mysql --no-defaults

#初始化mysql(5.7)

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

#到这一步很容易出问题,在初始化的时候一定要加上面的参数,而且在执行这一步操作前/data/mysql/data 这个目录必须是空的;在这里指定的basedir 和 datadir 目录必须要和/etc/my.cnf 配置的目录一直才行。

如果你的机器装了2个mysql那么你需要注意了,启动的时候需要绝对路径

/opt/mysql5.6/bin/mysqld_safe --defaults-file=/opt/mysql5.6.47/my.cnf --user=mysql &

#sock登录

/usr/local/mysql5.6/bin/mysql -uroot -P 33068 -p -S /data/mysql.5.6.47/tmp/mysql.sock

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#注:/data/mysql/data目录下一定要为空才行

#初始化mysql(5.6)

./scripts/mysql_install_db--basedir=/opt/mysql5.6.47/--datadir=/data/mysql.5.6.47/data--user=mysql--no-defaults

#初始化mysql(5.7)

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

#到这一步很容易出问题,在初始化的时候一定要加上面的参数,而且在执行这一步操作前/data/mysql/data 这个目录必须是空的;在这里指定的basedir 和 datadir 目录必须要和/etc/my.cnf 配置的目录一直才行。

如果你的机器装了2个mysql那么你需要注意了,启动的时候需要绝对路径

/opt/mysql5.6/bin/mysqld_safe--defaults-file=/opt/mysql5.6.47/my.cnf--user=mysql&

#sock登录

/usr/local/mysql5.6/bin/mysql-uroot-P33068-p-S/data/mysql.5.6.47/tmp/mysql.sock

54e15170b9e67c2ce09d3f41d0375f1f.png

拷贝可执行配置文件

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

1

cp/usr/local/mysql/support-files/mysql.server/etc/init.d/mysqld

6b1ad511984b04ca5c636af7731a1039.png

注:有些网友文章在这一步中会写到从/usr/local/mysql/support-files 这个目录复制my-default.cnf 到/etc/下作为my.cnf 配置文件,我这里没有这个文件,所以直接在配置环节,自己配置了一个my.cnf文件。

启动

service mysqld start

1

servicemysqldstart

faf9582cc9ae17d1b735d4c3a8a907a3.png

注:这一步也是很容易出问题的地方,当这里出现问题的时候,不要慌,看mysql 错误日志的内容,一般根据mysql 错误日志的提示都能很好的解决问题。

#常见启动错误

starting MySQL… ERROR! The server quit without updating PID file (/data/mysql/mysql.pid).

解决办法:

1.可能是/home/data/mysql 文件夹没有写的权限

解决方法 :给予权限,执行 “chown -R mysql:mysql /home/data/mysql” “chmod -R 755 /home/data/mysql” 然后重新启动mysqld!

2.可能进程里已经存在mysql进程

解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!

3.可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。

解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。

4.mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。

解决方法:请在[mysqld]下设置这一行:datadir = /home/data/mysql

5.skip-federated字段问题

解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。

6.错误日志目录不存在

解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限

7.selinux惹的祸,如果是centos或redhat系统,默认会开启selinux

解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

1.可能是/home/data/mysql文件夹没有写的权限

解决方法:给予权限,执行“chown-Rmysql:mysql/home/data/mysql”“chmod-R755/home/data/mysql”然后重新启动mysqld!

2.可能进程里已经存在mysql进程

解决方法:用命令“ps-ef|grepmysqld”查看是否有mysqld进程,如果有使用“kill-9进程号”杀死,然后重新启动mysqld!

3.可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。

解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。

4.mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。

解决方法:请在[mysqld]下设置这一行:datadir=/home/data/mysql

5.skip-federated字段问题

解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。

6.错误日志目录不存在

解决方法:使用“chown”“chmod”命令赋予mysql所有者及权限

7.selinux惹的祸,如果是centos或redhat系统,默认会开启selinux

解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。

测试连接

./mysql -hlocalhost -uroot -p

#无需密码即可连接成功

1

2

./mysql-hlocalhost-uroot-p

#无需密码即可连接成功

371b4d62b46063aa0687fbc6dbf4967b.png

更新密码

use mysql;

update user set authentication_string=password('123456') where user='root' and host='localhost';

flush privileges;

#说明:执行sql语句的时候,如果出现ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement. 则需要先执行一下flush privileges.

或者这样修改密码

set password for root@localhost = password('123456');

flush privileges;

1

2

3

4

5

6

7

8

9

usemysql;

updateusersetauthentication_string=password('123456')whereuser='root'andhost='localhost';

flushprivileges;

#说明:执行sql语句的时候,如果出现ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement. 则需要先执行一下flush privileges.

或者这样修改密码

setpasswordforroot@localhost=password('123456');

flushprivileges;

13fa5f283cf84e31b5387dfbac39278b.png

退出mysql 重启服务,使用密码登录

de46332f37da42db9fad048c22f08e5b.png

修改环境变量

在/etc/profile 中新增一行

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

#保存退出

source /etc/profile

#设置开机启动

systemctl enable mysqld

1

2

3

4

5

6

7

8

9

10

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

#保存退出

source/etc/profile

#设置开机启动

systemctlenablemysqld

f328b4ffadf3b8d3eb5560669f25e22c.png

(完)

小错误:如果你启动了mysql 但是在服务器上却找不到他的端口 3306

skip-networking #是因为你开启了这个选项

开启该选项后就不能远程访问MySQL

另外:

为安全考虑希望指定的IP访问MySQL,可以在配置文件中增加bind-address=IP,前提是关闭skip-networking

bind-address=192.168.1.100

1

2

3

4

5

6

skip-networking#是因为你开启了这个选项

开启该选项后就不能远程访问MySQL

另外:

为安全考虑希望指定的IP访问MySQL,可以在配置文件中增加bind-address=IP,前提是关闭skip-networking

bind-address=192.168.1.100

最后编辑:2020-11-10作者:shooter

cb9daae677fbcf9a9b0e39a252b93c86?s=96&d=monsterid&r=g

这个作者貌似有点懒,什么都没有留下。



推荐阅读
author-avatar
莫名2602913353
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有