操作系统:Linux CentOS 7.9
MySQL安装包:在官网下载需要的版本,这里我用的版本是 MySQL 8.0.11
mysql-8.0.11-linux-glibc2.12-x86_64.tar
MySQL官网下载地址: https://dev.mysql.com/downloads/mysql/
最好使用管理员权限 (root 用户)
su root
tar -xvf mysql-8.0.11-linux-glibc2.12-x86_64.tar
tar -zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
sudo mv mysql-8.0.11-linux-glibc2.12-x86_64 /usr/local
mv mysql-8.0.11-linux-glibc2.12-x86_64 mysql-8.0.11
sudo groupadd mysql
sudo useradd -r -g mysql mysql
groups mysql
若存在则显示 mysql : mysql
;若不存在,则显示 groups: mysql: No such user
chown -R mysql:mysql /usr/local/mysql-8.0.11/
touch /etc/my.cnf
vim /etc/my.cnf
增加配置,设置编码格式及忽略大小写:
[mysqld] basedir=/usr/local/mysql-8.0.11 datadir=/usr/local/mysql-8.0.11/data port=3306 socket=/tmp/mysql.sock character_set_server=utf8 lower_case_table_names=1 log-error=/usr/local/mysql-8.0.11/data/mysql.log pid-file=/usr/local/mysql-8.0.11/data/mysql.pid [mysql] default-character-set = utf8
注意: MySQL 8.0 版本的忽略大小写配置 lower_case_table_names=1
一定要在执行初始化前写在配置文件里,我之前遇到过这坑,当时像用 5.7 版本一样先初始化然后再改的配置文件,导致 mysql 无法启动,所以不同版本间的差异一定要注意!
cd mysql-8.0.11
mkdir data
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql-8.0.11/ --datadir=/usr/local/mysql-8.0.11/data/
如果出现以下错误:
./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
./bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
执行以下命令后重试:
yum install libaio
yum -y install numactl
目的:可用 service mysql start
命令来控制启动 mysql
cd support-files
cp mysql.server /etc/init.d/mysql
vim /etc/profile
在底部添加以下内容:
export MYSQL_HOME="/usr/local/mysql-8.0.11" export PATH="$PATH:$MYSQL_HOME/bin"
source /etc/profile
service mysql start
mysql -u root -p
初始密码可以查看 /usr/local/mysql-8.0.11/data/mysql.log
日志文件,在前面几行中找到生成的密码,如下所示:
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: dOwfzj.Fj7KC
拿到密码 dOwfzj.Fj7KC
登录 mysql ~
mysql> use mysql;
mysql> ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘你的密码’;
mysql> flush privileges;
注意: 还是版本的差异问题,MySQL 8.0 版本与 5.7 版本修改密码的命令以及下面的授权命令都有或多或少的不同,一定要注意!
mysql> create user ‘root’@’%’ identified by ‘你的密码’;
mysql> grant all privileges on *.* to ‘root’@’%’;
mysql> flush privileges;
注意: MySQL 5.7 版本只需一行命令即可完成,8.0 版本需要拆分成两行!
注意: 上一步骤创建的 root 用户在创建时就已完成该设置,可根据需求查看 mysql.user 表中的 host 列来判断是否需要执行此设置,这里还是以 root 用户为例!
mysql> use mysql;
mysql> update user set host=’%’ where user = ‘root’;
mysql> flush privileges;
mysql> exit
service mysql restart