linux系统下,MySQL(8.0.37版本)下载安装
1、下载
mysql官网:https://www.mysql.com/downloads/
选择合适的版本,我这边系统是:CentOS Linux release 7.9.2009 (Core)
下载的版本如下:
2、安装
2.1、解压
将下载的tar包上传到服务器,解压
tar -xvf mysql-8.0.37-linux-glibc2.17-x86_64-minimal.tar
解压后新生成三个文件,我们使用第一个,解压:
mysql-8.0.37-linux-glibc2.17-x86_64-minimal.tar.xz
mysql-router-8.0.37-linux-glibc2.17-x86_64-minimal.tar.xz
mysql-test-8.0.37-linux-glibc2.17-x86_64-minimal.tar.xz
#我解压到/usr/local目录了
cp mysql-8.0.37-linux-glibc2.17-x86_64-minimal.tar.xz /usr/local/
cd /usr/local/
tar -xvf mysql-8.0.37-linux-glibc2.17-x86_64-minimal.tar.xz
#重命名
mv mysql-8.0.37-linux-glibc2.17-x86_64-minimal mysql
# 创建数据存储目录
mkdir -p /usr/local/mysql/data
2.2、创建用户
创建用户组和用户,启动mysql时要指定用户,提前创建好并赋权
创建用户组和用户,并给用户赋予权限
groupadd mysql
useradd -g mysql mysql
chown -R mysql.mysql /usr/local/mysql/
2.3、初始化MySQL
初始化时会用到上面创建的用户
切换到bin目录,初始化MySQL基本信息
cd /usr/local/mysql/bin/
./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ --initialize
初始化完成后,会生成一个默认密码,找到默认密码并记住,后面会用到
more /var/log/mysql.log
找到这个密码,并记住:
2.4、将MySQL服务添加到系统中
将MySQL服务添加到系统
cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
2.5、授权以及添加服务到chkconfig列表
//增加mysql文件的可执行权限
chmod +X /etc/init.d/mysql
//把服务添加到chkconfig列表
chkconfig --add mysql
2.6、创建配置文件
注意注意注意:sql_mode=STRICT_TRANS_TABLES
一定要在mysql启动之前设置好,不然有些参数将不会生效
创建my.inf文件(MySQL的配置文件,用于保存MySQL服务器的各种配置参数)
下面是我的配置文件的一些常用的配置,有其他配置可以自行添加
[root@c5-jy-coupon-mysql1 mysql]# more /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
log_error=/var/log/mysql.log
log_bin=/usr/local/mysql/mysql-bin
binlog_format=row
skip-name-resolve
server_id=172
gtid-mode=on
enforce-gtid-consistency=true
max_connections = 1500
transaction-isolation = READ-COMMITTED
wait_timeout = 300
interactive_timeout = 300
group_concat_max_len = 10240
sql_mode=STRICT_TRANS_TABLES
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
[client]
port = 3306
default-character-set=utf8mb4
socket=/tmp/mysql.sock
设置my.cnf文件的权限
sudo chmod 664 /etc/my.cnf
以上,配置完毕
3、启动MySQL
service mysql start
4、登录
创建软链接
//系统默认会查找/usr/bin下的命令,如果命令不在这个目录下,会报错bash: mysql: 未找到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。
ln -s /usr/local/mysql/bin/mysql /usr/bin/
//使用临时密码登录
mysql -uroot -p
//进入到MySQL,依次执行
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Mysql@240513';
flush privileges;
quit;
//使用新密码登录,验证是否修改成功
mysql -uroot -p
#输入密码,回车即可看到版本信息
至此,安装完成,可以使用Navicat等工具远程连接。
#创建其他用户(也可以不创建,我的是单独创建一个给程序用)
CREATE USER 'sqluser'@'%' IDENTIFIED BY 'Myuser@2405';
GRANT ALL PRIVILEGES ON *.* TO 'sqluser'@'%' WITH GRANT OPTION;
flush privileges;
登录测试:
mysql -usqluser -p -P3306 -h134.90.3.60 --default-auth=mysql_native_password
5、问题记录
Caused by: java.sql.SQLSyntaxErrorException: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'hicon_identity_manager.c.client_name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
这个是因为sql_mode配置导致的
select @@sql_mode;
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 sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';