linux下安装MySQL的方式有不少种,包括以仓库的方式安装(yum,apt,zypper),以包的方式安装(rpm,deb),以docker方式安装,从压缩包解压安装,从源码编译安装,这里使用的是最后一种,从源码编译安装。
编译安装须要大量的耐心与时间,并且还会遇到很是多奇奇怪怪的问题,所以,须要极大的毅力,颇有可能一万次失败也换不来一次的成功,请作好心理准备。mysql
下面是安装要求,已安装的能够跳过。linux
gcc的话通常linux都配备,最低要求版本为5.3,须要更新的话能够看笔者的另外一篇博客。c++
boost不须要手动安装,后面运行cmake脚本的时候会自动下载安装,固然也能够手动安装,官网的文档说是须要特定版本,这里的MySQL Server 8.0.19须要的是1.70.0,目前最新的boost库为1.72.0。git
看笔者的另外一篇博客。sql
其余通常使用仓库安装便可,固然也能够每个都去折腾从源码安装,你喜欢就好。docker
7.x:ubuntu
sudo yum install -y bison bzip2 git hostname ncurses-devel openssl openssl-devel pkgconfig tar wget zlib-devel doxygen
8.x:bash
sudo yum install -y bison bzip2 git hostname ncurses-devel openssl openssl-devel pkgconfig tar wget zlib-devel doxygen diffutils rpcgen make libtirpc-devel
sudo apt-get update sudo apt-get install -y bison git hostname libncurses-dev libssl-dev make openssl pkg-config doxygen
MySQL Server下载
这里不知道带boost与不带boost的有什么区别,后面使用cmake的时候都须要手动下载boost,因此就随便选一个吧。有知道的大神能够留言,小弟感激涕零。服务器
tar -zxvf mysql-boost-8.0.19.tar.gz cd mysql-8.0.19
mkdir bld cd bld
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的能够不须要:ide
-DDOWNLOAD_BOOST=1 -DWITH_BOOST
安装位置与数据位置根据须要自定义:
-DCMAKE_INSTALL_PREFIX= -DMYSQL_DATADIR=
make -j n
n为cpu核心数,若失败请直接使用
make
这里编译须要比较长的时间,有进度提示。
sudo make install
这里笔者遇到了libstdc++.so.6这个库的问题,MySQL Server 8.0.19安装须要GLIBCXX_3.4.25.
能够看看本身的libstdc++.so.6的路径:
sudo find / -name lidstdc++.so.6
找到路径以后:
strings /xxx/libstdc++.so.6 | grep GLIBCXX
笔者这里只有GLIBCXX_3.4.22,因为以前手动更新了gcc,在gcc的lib目录中:
所以只须要根据sudo make install的提示把这个libstdc++.so.6复制到/lib/:
sudo cp libstdc++.so.6 /lib/x86_64-linux-gnu/
另外一种解决办法是(针对Ubuntu系),添加ppa源,而后update:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade
其余的也相似,更新gcc,手动指定lib的位置。
安装成功。
make test
测试经过。
安装完成后还须要进行MySQL的配置。
sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql
数据目录根据须要修改。
sudo chown mysql:mysql /usr/local/mysql/data sudo chmod 777 /usr/local/mysql/data
这里官网的文档写的是750权限,可是后面会出现不可写错误,755也不行,因此直接改为了777。
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
(额外阅读:utf8与utf8mb4)
进入到MySQL Server的安装目录下的bin:
mysqld --initialize-insecure --user=mysql
这里使用-insecure是由于后面不用输入随机密码。固然也能够去掉insecure,这样就会有一个随机密码,要记住。
mysqld --initialize --user=mysql
mysql_ssl_rsa_setup
这个通常服务器须要。
mysqld_safe --user=mysql &
先用root登陆
mysql -u root --skip-password
若是是使用initialize初始化的,输入
mysql -u root -p
输入刚才的临时密码。
进去以后,使用alter修改root密码:
alter 'root'@'localhost' identified by 'xxxxx'
使用自带的mysqlshow与mysqladmin:
mysqladmin -u root -p version mysqlshow -u root -p
完成,至此MySQL Server8.0.19安装完毕。
能够先把安装文件给删去:
sudo rm -rf mysql-8.0.19*
另外,根据刚才cmake的时候的boost目录能够把boost库给删去:
sudo rm -rf boost_1_70_0*
由于文档说只是须要boost去build,不须要使用。
加个别名只是为了方便使用,这里笔者的作法其实很偷懒,默认root登陆,修改~/.bash_aliases:
alias mysqld="/usr/local/mysql/bin/mysqld_safe --user=mysql &" alias mysql="/usr/local/mysql/bin/mysql -u root -p"
使用MySQL以前使用mysqld启动服务挂后台,而后使用mysql登陆,默认root用户。
固然更偷懒的作法是
alias mysql="/usr/local/mysql/bin/mysql -u root --password=xxxx"
这样密码都不用输了。