5.7和8.0的默认字符集是utf8mb4, 5.6的是utf8
1.mysql安装包下载链接:
https://dev.mysql.com/downloads/mysql/
2.(mysql-8.0.34-linux-glibc2.17-x86_64.tar.gz)
(mysql-8.0.34-linux-glibc2.28-x86_64.tar.gz)
两者有什么区别:
这两个文件名中的"glibc2.17"和"glibc2.28"表示了两个不同的glibc(GNU C Library)版本。
glibc是Linux系统中的重要组件之一,它提供了许多操作系统功能和服务的实现。不同的Linux发行版和版本可能使用不同的glibc版本。
在你提供的两个文件中,"glibc2.17"表示该MySQL版本是构建和编译在glibc 2.17上的,而"glibc2.28"表示该MySQL版本是构建和编译在glibc 2.28上的。
选择正确的glibc版本对于确保MySQL与特定Linux发行版和版本的兼容性非常重要。因此,你应该根据你的操作系统使用的glibc版本来选择相应的MySQL tar.gz包进行安装。
如果你的CentOS 7.6系统使用的是glibc 2.17,那么你应该选择下载并安装"glibc2.17"版本的MySQL tar.gz包。
如果你不确定你的系统使用的是哪个glibc版本,你可以在终端中运行以下命令来查看:
ldd --version
根据输出结果中的glibc版本信息,选择对应的MySQL tar.gz包进行安装。
请注意,确保选择与你的操作系统和glibc版本兼容的MySQL版本是非常重要的,否则可能会导致不稳定或不可预测的行为。
3.
ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
由 Roland McGrath 和 Ulrich Drepper 编写。
1.添加mysql用户:
groupadd mysql
useradd -r -g mysql mysql
2.解压mysql:
tar zxf mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
cd /usr/local/
mv mysql-5.6.51-linux-glibc2.12-x86_64/ mysql
chown -R mysql:mysql mysql/
3.创建mysql实例数据目录:
mkdir /data/mysql/3306/data -p
chown -R mysql:mysql /data/mysql
4.编辑配置文件
在MySQL 8.0中,UTF-8被称为UTF-8MB4,它支持4字节的Unicode字符。因此,使用utf8mb4代替utf8来设置字符集。
比如:character-set-server=utf8mb4
cp /usr/local/mysql/support-files/my-default.cnf /data/mysql/3306/my.cnf
vi /data/mysql/3306/my.cnf
#复制下文到配置文件
[client]
password = 123456
port = 3306
socket = /data/mysql/3306/mysql_3306.sock
default-character-set=utf8
#mysql8.0使用下面这个
#default-character-set=utf8mb4
[mysqld]
#给mysql8.0 配一下mysql_native_password
default_authentication_plugin = mysql_native_password
sql_mode=NO_ENGINE_SUBSTITUTION
port = 3306
socket = /data/mysql/3306/mysql_3306.sock
pid-file = /data/mysql/3306/mysql.pid
user = mysql
basedir = /usr/local/mysql
datadir = /data/mysql/3306/data
character_set_server=utf8
character_set_client=utf8
collation-server=utf8_general_ci
#mysql8.0使用下面这个
#character-set-server=utf8mb4
#collation-server=utf8mb4_unicode_ci
#lower_case_table_names = 0:表名区分大小写,且按照用户指定存储。
#lower_case_table_names = 1:表不区分大小写,使用小写存储。
#lower_case_table_names = 2:表不区分大小写,按照用户指定存储
lower_case_table_names=0
max_connections=1500
5.添加环境变量:
#修改数据目录的属主、属组
chown -R mysql:mysql /data/mysql/
vim /etc/profile
#添加这两行到配置文件
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
export PATH
#加载配置文件
source /etc/profile
6.初始化:
安装autoconf,不然会报错:
FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db:
Data::Dumper
yum install autoconf -y
创建需要目录和文件,并设置属主和属组,不然会报错:
mysqld_safe Directory ‘/var/lib/mysql’ for UNIX socket file don’t exists.
mysqld_safe error: log-error set to ‘/var/log/mariadb/mariadb.log’, however file don’t exists. Create writable for user ‘mysql’.
mkdir /var/log/mariadb/
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/
mkdir /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
准备完毕,初始化
(datadir 要与配置文件一致)
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/3306/data --user=mysql
chown -R mysql:mysql /data/mysql/
mysql8.0初始化:
mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/data/mysql/3306/data --user=mysql
chown -R mysql:mysql /data/mysql/
mysql8.0差异处:
在MySQL 8.0版本中,mysql_install_db命令已被弃用。在之前的MySQL版本中,mysql_install_db用于初始化MySQL数据目录并创建系统表。然而,在MySQL 8.0及以后的版本中,使用了新的数据目录初始化方法。
在MySQL 8.0中,可以使用mysqld命令来初始化数据目录。以下是在MySQL 8.0中初始化数据目录的一般步骤:
确保MySQL已经安装并配置正确。
打开终端或命令提示符,并切换到MySQL的安装目录。
执行以下命令来初始化数据目录:
mysqld --initialize-insecure
这将使用默认配置初始化数据目录,并生成一个初始的空密码,允许无密码访问
7.mysql启动实例:
mysqld_safe --defaults-file=/data/mysql/3306/my.cnf 2>&1 > /dev/null &
8.查看实例:
netstat -tulpn | grep -i mysql
或
ps -ef | grep mysql
9.登录实例:
#这里mysql的root用户并没有设置密码,密码提示直接敲 Enter即可
mysql -uroot -p -S /data/mysql/3306/mysql_3306.sock
Enter password: 直接回车
10.关闭实例:
#这里mysql的root用户并没有设置密码,密码提示直接敲 Enter即可
mysqladmin -uroot -p -S /data/mysql/3306/mysql_3306.sock shutdown
或:
mysqladmin -S /data/mysql/3306/mysql_3306.sock shutdown
或:(不写-h的时候默认是localhost,有时候是127.0.0.1用户,而没有localhost用户,需要分清楚)
mysqladmin -h 127.0.0.1 -P 3306 -S /data/mysql/3306/mysql_3306.sock -p shutdown
如果mysql用户没shutdown权限(可以grant赋权或者直接改mysql.user赋权):
kill -SIGTERM pid-of-mysqld-process(也可以kill,慎用)
mysql8.0认证【MySQL】Authentication plugin 'caching_sha2_password' reported error
使用MySQL8.0.30创建主从,启动从库的时候报错:
1
2
Last_IO_Errno:2061
Last_IO_Error:error connecting to mater 'repl@xxxxx:3308' - retry-time:60 retries:1 massage:Authentication plugin 'caching_sha2_password' reported error:Authentication require secure connection.
原因是在MySQL8之前,身份验证插件默认是mysql_native_password;而从8.0开始,换成了caching_sha2_password。
1.可以在mysql server的配置文件中,继续使用旧的验证插件。在配置文件中即可。
1
2
[mysqld]
default_authentication_plugin=mysql_native_password
2.也可以在用户级别进行修改,修改用户使用的验证插件即可:
1
2
3
# 相当于重新设置密码
alter user '[username]'@'[host]' identified with mysql_native_password by '[password]';
3.也可以使用GET_MASTER_PUBLIC_KEY=1,请求公钥:
1
mysql> change master to master_host='xxxx', master_port=3308, master_user='repl', master_password='pwd',master_auto_position = 1,get_master_public_key=1;