Centos7安装最新mysql-8.0.19的步骤

1、mysql官网找到社区版版本入口进入;https://dev.mysql.com/downloads/mysql

可以用wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

Centos7安装最新mysql-8.0.19的步骤_第1张图片

2、服务器上进行解压,由于是xz文件需要二次解压
 

第一步:xz -d mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz
第二步:tar -xvf mysql-8.0.19-linux-glibc2.12-x86_64.tar

3、将解压解包后的文件夹copy到/usr/local/下并重命名为mysql

cp -r  mysql-8.0.19-linux-glibc2.12-x86_64 /usr/local/mysql

4、初次安装mysql会遇到缺少libaio.so异常,所以先安装libaio

yum -y install libaio

5、mysql必须的binlog、logs、run、data这些文件存储的地方需要提前准备好

(注意:以下是我个人规划的路径,结合my.cnf的配置去规划文件夹路径)

Centos7安装最新mysql-8.0.19的步骤_第2张图片

binlogs:是mysql运行时sql执行日志

data:数据库文件存放路径

logs:运行或者错误日志路径

run:运行时进程文件

6、mysql创建成随linux系统自启动服务中;复制启动、关闭脚本到/etc/init.d中

cp -r /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

7、mysql的自启动脚本会优先检索/etc目录下my.cnf的配置文件,所以需要提前创建

[client]
port = 3306
socket = /usr/local/mysql/run/mysql.sock
[mysqld]
port = 3306
socket = /usr/local/mysql/run/mysql.sock
pid_file = /usr/local/mysql/run/mysql.pid
datadir = /usr/local/mysql/data
default_storage_engine = InnoDB
max_allowed_packet = 512M
max_connections = 2048
open_files_limit = 65535
#innodb_force_recovery=1
skip-name-resolve
#skip-grant-tables
#bind-address  = 127.0.0.1
bind-address  = 0.0.0.0
lower_case_table_names=1
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 2048M
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 0
key_buffer_size = 64M
log-error = /usr/local/mysql/logs/mysql_error.log
log-bin = /usr/local/mysql/binlogs/mysql-bin
slow_query_log = 1
slow_query_log_file = /usr/local/mysql/logs/mysql_slow_query.log
long_query_time = 5
tmp_table_size = 32M
max_heap_table_size = 32M
# query_cache_type = 0
# query_cache_size = 0
server-id=1
#log_bin_trust_routine_creators=1
wait_timeout=31536000

注意:从安全角度建议,生产环境中这两项不要这样配置

port=3306(mysql人人皆知的端口,初级黑客很容易侵入)

bind-address  = 0.0.0.0(如果该服务器有多网卡模式,那么所有IP都能访问这个数据库)

8、进入到/usr/local目录下,创建用户和用户组并授权

cd /usr/local/
groupadd mysql
useradd -r -g mysql mysql
cd mysql/ # 注意:进入mysql文件下授权所有的文件
chown -R mysql:mysql ./

注意:如果第五步按照my.cnf创建的这些文件夹binlog、log、run、data不在/usr/local中,需要另外给mysql用户授权一次,否则启动时会遇到权限问题;

9、初始化数据库

bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

注意:控制台中没有看到初始化日志,则需要去logs文件中查看日志,大概位置如下图

10、此时启动mysql,命令是service mysqld start,但是会遇到异常“The server quit without updating PID file”,可能是初始化的时候进程文件已经存在,需要手动删除;

ps -ef|grep mysql
kill -9 进程号

11、linux控制台登陆mysql更新密码

/usr/local/mysql/bin/mysql -u root -p

会提示输入密码,这时需要输入刚才初始化生成的密码

12、更改密码

alter user 'root'@'localhost' identified by '新密码';

*****************************mysql客户端通讯遇到的一些问题如下:

问题一:远程登陆报错,是需要修改user表,操作方式是:

(1)终端登陆:/usr/local/mysql/bin/mysql -u root -p

(2)进入mysql数据库:use mysql

(3)查询用户 SELECT HOST,USER FROM USER;

(4)host默认值都是localhost,需要修改root用户的host值为%;

(5)执行:update user set host='%' where user ='root';

(6)执行刷新权限:flush privileges;

问题二:我明明是修改了root密码为123456,但是远程无法用该密码登陆,经过分析mysql8以上版本密码格式默认是caching_sha2_password,我们希望改成mysql_native_password,具体的分析过程如下:

(1)登录Mysql:mysql -u root -p

(2)选择数据库:use mysql

(3)查看plugin设置:select host, user, plugin from user;

  Centos7安装最新mysql-8.0.19的步骤_第3张图片

(4)可以看到root的plugin是caching_sha2_password,我们希望改成mysql_native_password:

alter user 'root'@'%' identified WITH mysql_native_password by '123456';

(5)执行刷新权限:flush privileges;

问题三:

MySQL开启bin-log后,调用存储过程或者函数以及触发器时,会出现错误号为1418的错误:

在MySQL配置文件my.ini或my.cnf中加上: log-bin-trust-function-creators=1

你可能感兴趣的:(数据库mysql)