其实官网有教程的,我这里记录下来,是因为要写一个自动化安装脚本,虽然不经常用到,但是还是写出来比较好。
Mysql8.0仅支持CentOS 7x系统下安装,反正6.5的测试过一次,但是安装成功,启动失败,原因是缺少依赖。
Mysql8.0相信只会安装到64位的机器上。
- 首先,下载mysql8.0的压缩包:
# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.18-el7-x86_64.tar.gz
# wget http://mysql.mirror.kangaroot.net/Downloads/MySQL-8.0/mysql-8.0.18-el7-x86_64.tar.gz
wget http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-8.0/mysql-8.0.18-el7-x86_64.tar.gz
我测试了最后一个,下载速度最快,所以贴上来好了。
- 解压缩
tar -xzvf mysql-8.0.18-el7-x86_64.tar.gz
mv mysql-8.0.18-el7-x86_64/* /alidata/server/mysql
mkdir -p /alidata/server/mysql/data
ln -s /alidata/server/mysql-8.0.18 /usr/local/mysql
chmod 777 /alidata/server/mysql
chmod 777 /alidata/server/mysql/data
- 权限配置
groupadd mysql
useradd -g mysql -s /sbin/nologin mysql
chown -R mysql:mysql /alidata/server/mysql/
chown -R mysql:mysql /alidata/server/mysql/data/
chown -R mysql:mysql /alidata/log/mysql
chmod -R 777 /alidata/server/mysql/support-files
chmod -R 777 /alidata/server/mysql/bin
\cp -f /alidata/server/mysql/support-files/mysql.server /etc/init.d/mysqld
sed -i ‘s#^basedir=$#basedir=/alidata/server/mysql#’ /etc/init.d/mysqld
sed -i ‘s#^datadir=$#datadir=/alidata/server/mysql/data#’ /etc/init.d/mysqld
- 输出my.cnf文件
cat > /etc/my.cnf <<END
[client]
port=3306
default-character-set=utf8
[mysqld]
port = 3306
socket = /tmp/mysql.sock
default_authentication_plugin=mysql_native_password
skip-external-locking
log-error=/alidata/log/mysql/error.log
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESlog-bin=mysql-bin
binlog_format=mixed
server-id = 1innodb_buffer_pool_size=512M
innodb_flush_log_at_trx_commit=1
innodb_lock_wait_timeout=120
innodb_log_buffer_size=4M
innodb_log_file_size=256M
interactive_timeout=120
join_buffer_size=2M
key_buffer_size=32M
max_allowed_packet=16M
max_connections=100
max_heap_table_size=64M
myisam_max_sort_file_size=64G
myisam_sort_buffer_size=32M
read_buffer_size=512kb
read_rnd_buffer_size=4M
server_id=1
skip-external-locking=on
sort_buffer_size=256kb
table_open_cache=256
thread_cache_size=16
tmp_table_size=64M
wait_timeout=120[mysql]
default-character-set=utf8
END
- 最后,安装并启动
/alidata/server/mysql/bin/mysqld –initialize –user=mysql
chmod 755 /etc/init.d/mysqld
/etc/init.d/mysqld start
*需要注意:
mysql8.0安装成功后,会把初始密码写到log-error对应的文件中,我这里设置的路径是/alidata/log/mysql/error.log,打开这个文件,找到密码,并使用:mysql -uroot -p
登陆终端,把密码修改了,不然的话登陆上去,也操作不了其他。
修改密码的代码:
#alter user ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘bsiidno6gH0′;
#flush privileges
最后,贴出整个shell代码:
#!/bin/bash yum install -y libaio ifubuntu=$(cat /proc/version | grep ubuntu) if14=$(cat /etc/issue | grep 14) if [ `uname -m` == "x86_64" ];then machine=x86_64 else machine=i686 fi if [ $machine == "x86_64" ];then rm -rf mysql-8.0.18-el7-x86_64 if [ ! -f mysql-8.0.18-el7-x86_64.tar.gz ];then # wget http://zy-res.oss-cn-hangzhou.aliyuncs.com/mysql/mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz # wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz # wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.18-el7-x86_64.tar.gz # wget http://mysql.mirror.kangaroot.net/Downloads/MySQL-8.0/mysql-8.0.18-el7-x86_64.tar.gz wget http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-8.0/mysql-8.0.18-el7-x86_64.tar.gz fi tar -xzvf mysql-8.0.18-el7-x86_64.tar.gz mv mysql-8.0.18-el7-x86_64/* /alidata/server/mysql mkdir -p /alidata/server/mysql/data ln -s /alidata/server/mysql-8.0.18 /usr/local/mysql chmod 777 /alidata/server/mysql chmod 777 /alidata/server/mysql/data else echo 'unsupport machine i686' fi if [ "$ifubuntu" != "" ] && [ "$if14" != "" ];then mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak fi groupadd mysql useradd -g mysql -s /sbin/nologin mysql chown -R mysql:mysql /alidata/server/mysql/ chown -R mysql:mysql /alidata/server/mysql/data/ chown -R mysql:mysql /alidata/log/mysql chmod -R 777 /alidata/server/mysql/support-files chmod -R 777 /alidata/server/mysql/bin \cp -f /alidata/server/mysql/support-files/mysql.server /etc/init.d/mysqld sed -i 's#^basedir=$#basedir=/alidata/server/mysql#' /etc/init.d/mysqld sed -i 's#^datadir=$#datadir=/alidata/server/mysql/data#' /etc/init.d/mysqld cat > /etc/my.cnf <<END [client] port=3306 default-character-set=utf8 [mysqld] port = 3306 socket = /tmp/mysql.sock default_authentication_plugin=mysql_native_password skip-external-locking log-error=/alidata/log/mysql/error.log character-set-server=utf8 default-storage-engine=INNODB sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES log-bin=mysql-bin binlog_format=mixed server-id = 1 innodb_buffer_pool_size=512M innodb_flush_log_at_trx_commit=1 innodb_lock_wait_timeout=120 innodb_log_buffer_size=4M innodb_log_file_size=256M interactive_timeout=120 join_buffer_size=2M key_buffer_size=32M max_allowed_packet=16M max_connections=100 max_heap_table_size=64M myisam_max_sort_file_size=64G myisam_sort_buffer_size=32M read_buffer_size=512kb read_rnd_buffer_size=4M server_id=1 skip-external-locking=on sort_buffer_size=256kb table_open_cache=256 thread_cache_size=16 tmp_table_size=64M wait_timeout=120 [mysql] default-character-set=utf8 END /alidata/server/mysql/bin/mysqld --initialize --user=mysql chmod 755 /etc/init.d/mysqld /etc/init.d/mysqld start #mysql password see @/alidata/log/mysql/error.log #and must by alter root password. # #alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'bsiidno6gH0'; #flush privileges #use mysql mysql #update user set user.Host='%'where user.User='root'; #export PATH=$PATH:/alidata/server/mysql/bin # #/alidata/server/php/bin/php -f ./res/init_mysql.php
官方文档:
https://dev.mysql.com/doc/refman/8.0/en/installing.html