Skip to content

Latest commit

 

History

History
376 lines (265 loc) · 8.47 KB

mysql.md

File metadata and controls

376 lines (265 loc) · 8.47 KB

官方文档

https://dev.mysql.com/doc/refman/8.0/en/source-installation.html

https://www.cnblogs.com/Blueeeeeeee/p/12425279.html#ubuntu%E7%B3%BB

下载带有boost头的源码包

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.19.tar.gz

由于选择了带有boost头的包

cmake .. \
-DWITH_BOOST=/root/mysql/boost/boost_1_70_0 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_SSL=system \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/server \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_TCP_PORT=3306 \

没选的话

cmake .. \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=. \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_SSL=system \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/server \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_TCP_PORT=3306 \

安装了boost的可以不需要:

-DDOWNLOAD_BOOST=1 
-DWITH_BOOST

安装位置与数据位置根据需要自定义:

-DCMAKE_INSTALL_PREFIX=
-DMYSQL_DATADIR=

报错

CMake Error at cmake/readline.cmake:71 (MESSAGE):
  Curses library not found.  Please install appropriate package,

      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):
  cmake/readline.cmake:100 (FIND_CURSES)
  cmake/readline.cmake:194 (MYSQL_USE_BUNDLED_EDITLINE)
  CMakeLists.txt:1195 (MYSQL_CHECK_EDITLINE)


-- Configuring incomplete, errors occurred!
See also "/root/mysql/boost/CMakeFiles/CMakeOutput.log".
See also "/root/mysql/boost/CMakeFiles/CMakeError.log".

需要安装libncurses5-dev

apt-get install libncurses5-dev

移除CMakeCache.txt

rm CMakeCache.txt 

继续报错

CMake Warning at cmake/pkg-config.cmake:29 (MESSAGE):
  Cannot find pkg-config.  You need to install the required package:

    Debian/Ubuntu:              apt install pkg-config
    RedHat/Fedora/Oracle Linux: yum install pkg-config
    SuSE:                       zypper install pkg-config

Call Stack (most recent call first):
  cmake/rpc.cmake:29 (MYSQL_CHECK_PKGCONFIG)
  plugin/group_replication/libmysqlgcs/configure.cmake:57 (MYSQL_CHECK_RPC)
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:28 (INCLUDE)


CMake Error at /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
Call Stack (most recent call first):
  /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:36 (find_package_handle_standard_args)
  cmake/pkg-config.cmake:36 (FIND_PACKAGE)
  cmake/rpc.cmake:29 (MYSQL_CHECK_PKGCONFIG)
  plugin/group_replication/libmysqlgcs/configure.cmake:57 (MYSQL_CHECK_RPC)
  plugin/group_replication/libmysqlgcs/CMakeLists.txt:28 (INCLUDE)


-- Configuring incomplete, errors occurred!
See also "/root/mysql/bld/CMakeFiles/CMakeOutput.log".
See also "/root/mysql/bld/CMakeFiles/CMakeError.log".

安装

apt install pkg-config

再次cmake成功

make
make install

卡住[ 52%] Building CXX object sql/CMakeFiles/sql_gis.dir/item_geofunc_setops.cc.o

g++: 内部错误:Killed (程序 cc1plus)

这个原因是内存不足, 在linux下增加临时swap空间 step 1:

sudo dd if=/dev/zero of=/home/swap bs=64M count=16

of=/home/swap,放置swap的空间; count的大小就是增加的swap空间的大小,64M就是块大小,这里是64MB,所以总共空间就是bs*count=1024MB.这里分配空间的时候需要一点时间,等待执行完毕。 step 2:

sudo mkswap /home/swap

可能会提示warning: don't erase bootbits sectorson whole disk. Use -f to force,不用理会:把刚才空间格式化成swap各式 step 3:

sudo swapon /home/swap

  注释:使刚才创建的swap空间 step 4:执行你相关的操作,如make 如果创建了临时空间仍然提示 "g++: 内部错误:Killed (程序 cc1plus)",可能分配的空间不够大,可继续分配更大的空间。 关闭: step 1:

sudo swapoff /home/swap

step 2:

sudo rm /home/swap

23:24-04:06装了四个半小时。。

 make install

测试

make test

100% tests passed, 0 tests failed out of 19 Total Test time (real) = 2.14 sec

配置MySQL 安装完成后还需要进行MySQL的配置。

新建用户组与用户

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

修改数据目录所有者与权限 数据目录根据需要修改。

chown mysql:mysql /usr/local/mysql/data
chmod 777 /usr/local/mysql/data

这里官网的文档写的是750权限,但是后面会出现不可写错误,755也不行,所以直接改成了777。 my.cnf my.cnf在/etc或/etc/mysql下,笔者这里安装后默认有一个my.cnf在/etc/mysql下: /etc/mysql/my.cnf是全局配置,~/.my.cnf是用户特定的配置,这里直接修改/etc/mysql/my.cnf:

[mysqld]
port=3306
basedir=/usr/local/mysql/server
datadir=/usr/local/mysql/data
character-set-server=utf8mb4
[mysql]
default-character-set=utf8
[client]
port=3306
default-character-set=utf8

参数根据需要可以后期添加,这里如果使用utf8:

[mysqld]
character-set-server=utf8

会有警告,因为MySQL5.5.3之后增加了utf8mb4,mb4是most bytes 4的意思,专门用来兼容四字节的unicode,utf8指的是utf8mb3,支持的utf8编码最大字符长度为3字节,警告提示改成utf8mb4:

[mysqld]
character-set-server=utf8mb4

初始化 进入到MySQL Server的安装目录下的bin:

./mysqld --initialize-insecure --user=mysql

2020-03-10T00:37:08.708780Z 0 [System] [MY-013169] [Server] /usr/local/mysql/server/bin/mysqld (mysqld 8.0.19) initializing of server in progress as process 14069 2020-03-10T00:37:12.485582Z 5 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.

这里使用-insecure是因为后面不用输入随机密码。当然也可以去掉insecure,这样就会有一个随机密码,要记住。

mysqld --initialize --user=mysql

支持ssl与rsa(可选)

./mysql_ssl_rsa_setup

这个一般服务器需要。

开启服务

./mysqld_safe --user=mysql &

修改root密码 先用root登录

./mysql -u root --skip-password

如果是使用initialize初始化的,输入

./mysql -u root -p

输入刚才的临时密码。 进去之后,使用alter修改root密码:

alter user 'root'@'localhost' identified with mysql_native_password by '123456';flush privileges

加入with mysql_native_password可以保证navicat连接不会出问题

测试 使用自带的mysqlshow与mysqladmin:

./mysqladmin -u root -p version
./mysqlshow -u root -p

至此MySQL Server8.0.19安装完毕。

后续处理 删除文件 可以先把安装文件给删去:

rm -rf mysql-8.0.19*

根据刚才cmake的时候的boost目录可以把boost库给删去:

rm -rf boost_1_70_0*

因为文档说只是需要boost去build,不需要使用。

别名 加个别名只是为了方便使用,这里笔者的做法其实很偷懒,默认root登录,修改~/.bashrc:

alias mysqld="/usr/local/mysql/server/bin/mysqld_safe --user=mysql &"
alias mysql="/usr/local/mysql/server/bin/mysql -u root -p"

使用MySQL之前使用mysqld启动服务挂后台,然后使用mysql登录,默认root用户。 当然更偷懒的做法是

alias mysql="/usr/local/mysql/server/bin/mysql -u root --password=xxxx"

这样密码都不用输了。

 source ~/.bashrc 

使文件生效

Navicat链接数据库报错1130解决方案

问题原因:默认情况下root用户只允许本机访问,即使用localhost访问

解决方案:将root用户对用的host改为 '%',即允许所有IP访问,然后刷新即可.

问题解决具体步骤 1.命令窗口登录mysql

mysql  -uroot  -padmin

2.连接到mysql(数据库名)

use mysql;

3.修改表user的值

update user set host = '%' where user = 'root';

4.刷新配置

flush   privileges;