目录
一、准备
1、检查libaio.so.1
2、卸载删除原有的mariadb
3、删除my.cnf
4、下载mysql安装包
二、安装
1、上传mysql
2、建立mysql所需目录
3、建立配置文件my.cnf
4、创建mysql用户并授权
5、初始化数据库
6、启动MySQL数据库
7、常见启动报错处理
8、配置MySQL环境变量
9、修改root登录密码
三、配置
1、开启MySQL远程连接
一、准备
1、检查libaio.so.1
mysql启动需要这个包,安装前提前检查下有没,没有则需要安装。
###查找
whereis libaio.so.1
###如果没有则安装
#在线安装
yum install -y libaio
#离线安装
rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm
2、卸载删除原有的mariadb
卸载删除原有的mariadb,否则可能会报异常。
#查询原有的mariadb环境
rpm -qa|grep mariadb
#卸载操作,rpm -e --nodeps后续跟着相应查出的mariadb即可,--nodeps为忽略依赖
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
3、删除my.cnf
如果之前安装过mysql卸载了,可查看下有无my.cnf并删除
#查找
find / -name my.cnf
#删除
rm -rf /etc/my.cnf
4、下载mysql安装包
官网地址:MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/
根据自己的操作系统情况选择下载,我选了第一个“mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz”
二、安装
1、上传mysql
#将文件mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz上传到服务器
#解压
tar -zxvf mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz
#移动到要安装的目录并重命名
mv mysql8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql
2、建立mysql所需目录
#建立mysql所需目录 /usr/local/mysql下建立
mkdir data
mkdir log
mkdir pid
mkdir tmp
3、建立配置文件my.cnf
#编辑my.cnf
vim my.cnf
添加如下内容:
[mysqld]
port = 3306
basedir =/usr/local/mysql
datadir = /usr/local/mysql/data
log-error = /usr/local/mysql/log/mysqld.log
pid-file = /usr/local/mysql/pid/mysqld.pid
socket = /usr/local/mysql/tmp/mysql.sock
character-set-server=utf8
default-storage-engine=Innodb
max_connections=500
lower_case_table_names = 1
interactive_timeout=288000
wait_timeout=288000
net_read_timeout=900
net_write_timeout=900
max_allowed_packet=1073741824
log_bin_trust_function_creators=1
innodb_flush_log_at_trx_commit = 2
sync_binlog = 2000
key_buffer_size=8G
read_buffer_size=64K
sort_buffer_size=256K
myisam_max_sort_file_size=100G
innodb_buffer_pool_size=10G
innodb-buffer-pool-instances=8
innodb_read_io_threads=8
innodb_write_io_threads=8
innodb-file-per-table=true
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
注意:
在MySQL8之后不支持NO_AUTO_CREATE_USER服务。也就是设置sql_mode中不能有NO_AUTO_CREATE_USER,否则后续MySQL无法启动,启动报错如下:
4、创建mysql用户并授权
#新建用户
adduser mysql
#授权
chown -R mysql:mysql /usr/local/mysql
5、初始化数据库
这里初始化后会有会打印出一个随机密码(如: root@localhost: JQ=ihNp-x64N ),记住他,后续修改root密码要用。
bin/mysqld --initialize --user=mysql --basedir=/tdx/mysql8.0.33 --lower_case_table_names=1
选项说明:
–initialize 初始化(真正开始干活)
–user=mysql 以mysql用户的身份初始化数据库,产生文件都是mysql作为拥有者
–basedir=xxx mysql其安装目录,非常重要
–lower_case_table_names=1 不区分大小写,初始化不指定,必须重装才能解决,非常重要
6、启动MySQL数据库
方式一:
#将mysql纳入服务管理,这步不执行的话service mysql start报错
cp support-files/mysql.server /etc/init.d/mysql
#启动
service mysql start
方式二:
#启动MySQL
systemctl start mysqld
#停止MySQL
systemctl stop mysqld
#查看MySQL运行状态
systemctl status mysqld
#设置MySQL开机自启
systemctl enable mysqld
这里解答下为什么方式一要复制 mysql.server 到 /etc/init.d/mysql
/etc/init.d/xxxx xxxx这样的方式是老版本Linux使用的服务管理方式(针对从官方软件仓库或官方镜像源安装的软件),针对CentOS来说,是CentOS 6.9及其以下版本才用这样的方式启动MySQL服务,从CentOS 7开始,改成了systemd管理系统服务,这样可以用方式二来管理服务。
摘于:知乎 https://www.zhihu.com/question/455654934
7、常见启动报错处理
报错1:
error: log-error set to ‘/usr/local/mysql/log/mysqld.log’, however file don’t exists. Create writable for user ‘mysql’.
ERROR! The server quit without updating PID file (/usr/local/mysql/pid/mysqld.pid).=
需要建立所需文件并修改文件属主后再次启动。
#建立所需
touch /tdx/mysql8.0.33/log/mysqld.log
#修改所属用户
chown -R mysql:mysql /tdx/mysql8.0.33/log/mysqld.log
报错2:
ERROR! The server quit without updating PID file (/usr/local/mysql/pid/mysqld.pid).=
可以查看日志文件/usr/local/mysql/log/mysqld.log确认具体原因。
比如:在MySQL8之后不支持NO_AUTO_CREATE_USER服务。
报错3:
mysql.sock文件路径不对的问题
方法一:在/tmp下创建一个link:ln -s /usr/local/mysql/tmp/mysql.sock /tmp/mysql.sock
方法二:在root权限下修改my.cnf文件(/etc/mysql/my.cnf),指定正确的路径。文件[mysqld]中加上“socket=/usr/local/mysql/tmp/mysql.sock”
8、配置MySQL环境变量
启动成功后修改环境变量,环境变量修改完后加载环境变量,然后输入mysql测试环境变量是否配置成功。
#打开/etc/profile文件编辑
sudo vim /etc/profile
#文件/etc/profile最下面加入如下内容
#MYSQL_HOME
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
#修改保存后加载环境变量
source /etc/profile
9、修改root登录密码
#root登录
mysql -u root -p
#输入初始化数据库时让记住的密码
JQ=ihNp-x64N
#修改密码,注意如果密码不符合配置的密码策略,会报错,密码可以复杂点
alter user root@localhost identified by '123456';
三、配置
1、开启MySQL远程连接
一般都会通过Navicat连接,但root用户默认只能本地访问。
#使用mysql数据库
use mysql;
#查看root账号权限
select user,host from user;
#如果root不是 %,使用语句更新
update user set host = '%' where user = 'root';
#修改后仍无法远程访问可重启下服务
service mysql restart
2、解决Navicat连接报错“caching_sha2_password”
Navicat连接时报错 Authentication plugin ‘caching_sha2_password‘ cannot be loaded
- mysql5 默认加密方式是 my_native_password
- mysql8 默认加密方式是 caching_sha2_password
这个问题就是MySQL使用了caching_sha2_password加密方式但Navicat却找不到某个必需的文件。可通过修改root加密方式来解决。
# 选择数据库mysql
use mysql;
#方式一:修改加密方式
update user set plugin='mysql_native_password';
#方式二:只修改root加密方式,这里还需定义密码,注意如果密码不符合配置的密码策略,会报错,密码可以复杂点
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123@#a';
配置完成后再测试下连接,可以连接成功了。