1.下载安装包 Linux - Generic (glibc 2.12) (x86, 64-bit), Compressed TAR Archive

下载地址: MySQL :: Download MySQL Community Server

2.解压安装包

# 创建文件夹
mkdir /usr/local/mysql

# 解压到指定文件夹
tar xvf mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz -C /usr/local/mysql

# 重命名
cd /usr/local/mysql
mv mysql-8.0.29-linux-glibc2.12-x86_64 mysql-8.0.29


3.创建用户组并授权

# 创建用户组
groupadd mysql

# 创建用户
useradd -g mysql mysql

# 授权
chown -R mysql.mysql /usr/local/mysql

4.初始化数据

初始化前新建文件/etc/my.cnf,添加如容(目录可以自定义)

[mysqld]
basedir=/usr/local/mysql/mysql-8.0.29
datadir=/usr/local/mysql/data
port=3306
log-error=/usr/local/mysql/logs/error.log

# 仅当初始化化数据时设置有效
lower_case_table_names=1
# 创建数据存放目录
mkdir /usr/local/mysql/data
mkdir /usr/local/mysql/logs
chown -R mysql.mysql /usr/local/mysql/data
chown -R mysql.mysql /usr/local/mysql/logs

# 初始化数据
sudo /usr/local/mysql/mysql-8.0.29/bin/mysqld --user=mysql --basedir=/usr/local/mysql/mysql-8.0.29 --datadir=/usr/local/mysql/data/ --pid-file=/usr/local/mysql/data/mysql.pid --initialize

# 记录临时密码,一般控制台最后一行,也可以在/usr/local/mysql/logs/error.log查询 内容如下:
A temporary password is generated for root@localhost: :yAw,yD+u2*0


5.添加mysqld到系统服务

# 复制命令到 /etc/init.d/目录
cp -a /usr/local/mysql/mysql-8.0.29/support-files/mysql.server /etc/init.d/mysql

# 修改 mysql 中变量: basedir & datadir
vi /etc/init.d/mysql 
....
basedir=/usr/local/mysql/mysql-8.0.29
datadir=/usr/local/mysql/data
....

#受权&添加服务
chmod +x /etc/init.d/mysql
chkconfig --add mysql

# 启动服务
service mysql start

# 查看服务状态
service mysql status

或建立/etc/my.cnf文件,配置datadir

[mysqld]
basedir=/usr/local/mysql/mysql-8.0.29
datadir=/usr/local/mysql/data
port=3306

6. 建立软链接,方面使用(可选)

ln -s /usr/local/mysql/mysql-8.0.29/bin/mysql /usr/bin

7.修改密码

# 进入mysql命令行,输入临时密码
mysql -uroot -p

#修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

# 生效
flush privileges;

# 修改远程访问 可选
use mysql;
update user set host='%' where user='root';
flush privileges;

备注:

1 .错误:error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

解决方法:

# 安装缺少依赖
yum install libaio-devel.x86_64

2.错误: 3680 - Failed to create schema directory '****' (errno: 2 - No such file or directory)

产生原因:创建完数据库,手动把datadir移动到其他地方

解决方法:(权限不足)

# 修改文件拥有者(当mysql是以mysql用户启动时修改)
chown -R mysql.mysql /data/mysql/data

# 文件权限
chmod 640 文件名

# 文件夹权限
chmod 750 文件夹名

3 .错误:mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

解决方法:

# 建立软链接
ln -s /lib64/libtinfo.so.6 /lib64/libtinfo.so.5

4,错误:java.sql.SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'field0_.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

解决方法:

# 查询当前的模式
SELECT @@global.sql_mode;

# 返回结果包含 ONLY_FULL_GROUP_BY
如:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

# 方法一,临时修改 去掉【ONLY_FULL_GROUP_BY】项
SET GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

# 方法二,修改/etc/my.cnf (Linux 安装默认配置路径,自定义安装的修改自定义配置文件)
[mysqld]
...
# 新增配置项
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'


5,错误:创建数据表,1067 - Invalid default value for

sql_mode 去掉 NO_ZERO_IN_DATE, NO_ZERO_DATE

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐