安装:
①安装依赖
sudo apt install gcc g++ libxml2 libxml2-dev libssl-dev curl libcurl4-openssl-dev libgd-dev
sudo apt install numactl
sudo apt install libaio-dev
sudo apt install cmake
注意: MySQL8.0需要用gcc的版本为 5.3以上
②下载源码
源码包分为带boost版和不带boost版的,方便起见直接下载带boost的。
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.16.tar.gz
tar xzv -f mysql-boost-8.0.16.tar.gz
cd mysql-8.0.16
③编译安装
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_BOOST=boost -DFORCE_INSOURCE_BUILD=ON
make && make install
如报错:
c++: Internal error: Killed (program cc1plus)
Please submit a full bug report.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
make[2]: *** [sql/CMakeFiles/sql.dir/item_geofunc.cc.o] Error 1
make[1]: *** [sql/CMakeFiles/sql.dir/all] Error 2
make: *** [all] Error 2
内存不足所致,可通过设置2G交换分区来解决该问题。
解决:
#获取要增加的2G的SWAP文件块
dd if=/dev/zero of=/swapfile bs=1k count=2048000
#创建SWAP文件
mkswap /swapfile
#激活SWAP文件
swapon /swapfile
#查看SWAP信息是否正确
swapon -s
#添加到fstab文件中让系统引导时自动启动
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab
swapfile文件的路径在/var/下,编译完后, 如果不想要交换分区了, 可以删除。
删除交换分区:
swapoff /swapfile
rm -rf /swapfile
至此,问题解决。
④初始配置
添加mysql用户组和配置文件权属。
groupadd mysql
useradd -g mysql mysql
mkdir -p /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql
初始化安装。(这一步会生成root密码,保存)
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
下面是成功返回(密码在第二行最后)
2020-08-14T09:53:30.996651Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.16) initializing of server in progress as process 29384
2020-08-14T09:53:34.163071Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 5IjtSISeeS*b
2020-08-14T09:53:35.568572Z 0 [System] [MY-013170] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.16) initializing of server has completed
新建一个全局用的简单的配置文件。
vim /etc/my.cnf
# 然后写入以下内容 #
[mysqld]
datadir=/usr/local/mysql/var
socket=/tmp/mysql.sock
port=3306
user=mysql
[mysql.server]
basedir=/usr/local/mysql
⑤开启服务
配置mysqld服务。
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
update-rc.d mysqld defaults
service mysqld start
添加PATH。(全局mysql)
echo -e '# MySQL PATH\nexport PATH=/usr/local/mysql/bin:$PATH\n' >> /etc/profile
source /etc/profile
连接登录MySQL并修改root账户密码(需要使用第④步生成的密码)。
mysql -uroot -p
使用第④步生成的密码登录成功,第一次需要修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'shx@123';
FLUSH PRIVILEGES;
可以查询用户和权限
mysql> select host,user from user;
若要想root用户可以远程登录mysql,则还需要以下命令:update user set host = '%' where user = 'root';
然后在执行 flush privileges;
也可以直接给用户权限
grant all on *.* to 用户名@"%" identified by "密码";
flush privileges;刷新权限
新建用户并授权(不修改root权限)
创建用户
create user 'user'@'%' identified by 'pwd'; //'user'你的用户名 'pwd' 密码
赋予权限
GRANT ALL PRIVILEGES ON *.* TO 'beaut'@'%' WITH GRANT OPTION; 'beaut' 换成刚刚创建的用户名
flush privileges;
登录阿里云服务器,创建安全组(3306)
来源:oschina
链接:https://my.oschina.net/u/4221859/blog/4462338