theboyaply

学,就硬学!

  • Home
  • Archives
  • Java
  • Maven
  • Docker
  • Kubernetes
  • JavaScript
  • ES6
  • Vue
  • 踩坑记录
  • noted

  • 搜索
element ui vue wsimport webservice npm mysql redis node nginx nfs ftp es6 开发工具 vscode 前端 javascript springboot 常见问题 tomcat oracle jenkins maven k8s Linux gitlab docker java

Linux安装MySQL8

发表于 2022-07-04 | 分类于 踩坑记录 | 0 | 阅读次数 255

  • 1. 查看是否安装mysql
  • 2. 下载mysql安装包
  • 3. 解压及配置文件
  • 创建mysql用户组及权限
  • 创建日志和数据目录
  • 初始化数据库
  • 启/停/登录
  • 用户相关
    • 修改root默认密码
    • 新增用户
  • 其他操作
  • 常见问题
    • 2059 - authentication plugin ‘caching_sha2_password’

1. 查看是否安装mysql

安装mysql之前,需要查看是否安装了mysql,如果安装则进行卸载,命令:

rpm -qa | grep mysql

卸载命令:

rpm -e --nodeps mysql-*

查看是否安装mariadb数据库,如果存在,则卸载,命令:

rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.35-3.el7.x86_64

2. 下载mysql安装包

结合命令cat /etc/system-release和getconf LONG_BIT查看需要下载的mysql包,命令分别表示系统发行版本和位数。

下载地址:点击访问>mysql官方下载地址<

操作系统可选Linux - Generic,这个下面的安装包是通用的。

本文以mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz为例。链接地址:https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz

3. 解压及配置文件

把下载的安装包放到/data/mysql下并进行解压,然后把解压后的文件重命名为mysql:

[root@% mysql]# pwd
/data/mysql

[root@% mysql]# ls
mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz

[root@% mysql]# tar -Jxvf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
[root@% mysql]# mv mysql-8.0.27-linux-glibc2.12-x86_64 mysql

[root@% mysql]# ls
mysql  mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz

复制配置文件并编辑,把mysql下的配置文件覆盖到/etc/my.cnf,并修改/etc/my.cnf内容:

[root@% support-files]# pwd
/data/mysql/mysql/support-files

[root@% support-files]# ls
magic  my-default.cnf  mysqld_multi.server  mysql-log-rotate  mysql.server

[root@% support-files]# cp /data/mysql/mysql/support-files/my-default.cnf /etc/my.cnf
[root@% support-files]# vin /etc/my.cnf

配置内容如下,可根据需要增加其他配置:

[mysqld]
basedir=/data/mysql/mysql
datadir=/data/mysql/mysql/data
port=3306
user=mysql
# 允许最大连接数
max_connections=400
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 排序规则
collation_server=utf8mb4_general_ci
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
max_allowed_packet=16M
#linux不区分表大小写0区分1不区分
lower_case_table_names=1
#log-error=/var/log/mariadb/mariadb.log
log-error=/data/mysql/mysql/log/mysql.err
pid-file=/data/mysql/mysql/mysql.pid
# 开启binlog需要指定server-id
server-id=1
# binlog文件的前缀
#log-bin=mysql-bin
# binlog文件保存的天数,默认0表示永久保存
#expire_logs_days=15
# 缓存大小,一般生产服务器需要配置,建议为服务器总内存50%,默认128M
innodb_buffer_pool_size=4G
innodb_flush_log_at_trx_commit=1
# socket=/var/lib/mysql/mysql.sock
# 建议就放在这个位置,登录mysql时会从这里找mysql.sock
socket=/tmp/mysql.sock
innodb_data_file_path = ibdata1:1G;ibdata2:12M:autoextend:max:5G

#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#default_authentication_plugin=mysql_native_password

创建mysql用户组及权限

创建mysql用户组和用户并修改权限:

[root@% mysql]# groupadd mysql
[root@% mysql]# useradd -r -g mysql mysql
[root@% mysql]# chown mysql:mysql -R /data/mysql/mysql

创建日志和数据目录

在mysql目录下创建data和log目录:

[root@% mysql]# mkdir data log

初始化数据库

进入bin目录并执行初始化命令:

[root@% bin]# pwd
/data/mysql/mysql/bin
[root@% bin]# ./mysqld --defaults-file=/etc/my.cnf --basedir=/data/mysql/mysql/ --datadir=/data/mysql/mysql/data/ --user=mysql --initialize

运行后查看/data/mysql/mysql/log目录下的日志文件mysql.err,如果初始化成功,会出现初始化的root密码:

2022-07-04T00:57:32.985124Z 0 [System] [MY-013169] [Server] /data/mysql/mysql/bin/mysqld (mysqld 8.0.27) initializing of server in progress as process 16593
2022-07-04T00:57:32.993320Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-07-04T00:57:39.091347Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-07-04T00:57:39.898388Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1 is enabled for channel mysql_main
2022-07-04T00:57:39.898411Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1.1 is enabled for channel mysql_main
2022-07-04T00:57:40.027646Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: iio1f4Gdfk:h

如果失败,则根据日志文件的信息自行排错。(按照上面的配置文件,可能是log-error的配置导致的失败,把log-error放到[mysqld_safe]块下再试试。具体原因可以自己搜搜)。

设置mysql环境变量

把/data/mysql/mysql/bin加入到环境变量中,在末尾追加:

export PATH=/data/mysql/mysql/bin:$PATH

使用source /etc/profile使其生效。

如果配置后,使用mysql命令提示bash: mysql: command not found...,那么再添加一个软连接:

[root@% bin]# ln -s /data/mysql/mysql/bin/mysql /usr/bin

设置开机自启

[root@% bin]# cp /data/mysql/mysql/support-files/mysql.server /etc/init.d/mysql
[root@% bin]# cp /data/mysql/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql

增加 mysql 服务控制脚本执行权限

[root@% bin]# chmod +x /etc/rc.d/init.d/mysql

将 mysql 服务加入到系统服务

[root@% bin]# chkconfig --add mysql

启/停/登录

[root@% bin]# service mysql start
[root@% bin]# service mysql stop
[root@% bin]# service mysql restart
[root@% bin]# mysql -uroot -p

用户相关

修改root默认密码

5.7版本可使用以下语句进行修改:

mysql> set password for root@localhost = password('123456');

8版本及以上就需要使用以下语句进行修改:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

注意,上面的WITH mysql_native_password可以去掉或者换成WITH caching_sha2_password。其中caching_sha2_password是8版本及以上的默认值。

新增用户

mysql8版本在创建新用户时,请先创建用户,再赋予权限:

mysql> create user 'tom2'@'%' identified by '123456';
mysql> grant all privileges on *.* to 'tom'@'%' with grant option;
mysql> flush privileges;

注意,新增的用户如果用Navicat连接提示2059 - authentication plugin 'caching_sha2_password' xxx,请看下面常见问题的解决方案。

其他操作

请跳转到Linux安装MySQL5.7查看。

常见问题

2059 - authentication plugin ‘caching_sha2_password’

如果使用Navicat连接数据库提示以上错误,是因为MySQL新版本(8以上版本)的用户登录方式默认是【caching_sha2_password】,Navicat不支持这种用户登录账户加密方式。

具体用户是哪种登录方式可使用以下命令查看:

mysql> select host,user,plugin from mysql.user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| %         | tom              | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | mysql_native_password |
+-----------+------------------+-----------------------+

可以看到,如果我们使用navicat登录tom用户的话,就会报错。

只需将tom用户的plugin改为mysql_native_password即可正常登录:

mysql> ALTER USER 'tom'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

– end –

# Linux # mysql
node-npm 基础知识
使用java的wsimport生成Webservice客户端代码
  • 文章目录
  • 站点概览
theboyaply

theboyaply

好记性不如烂笔头

185 日志
13 分类
27 标签
Github E-mail
Creative Commons
0%
© 2019 — 2023 theboyaply
由 Halo 强力驱动
|
主题 - NexT.Gemini
湘ICP备19009291号

湘公网安备 43312402001034号