背景:自己有台云服务器,系统是centos7,内存4G,cpu是2核的,上面部署了一个Java应用设置的jvm最大占1G,之前单独买了一个云数据库,因为资金紧张到期不想续费,所以想在应用服务器上安装一个mysql,让服务正常运行。
分析:安装方式有两种:一种是安装包的方式,另一种是yum方式安装。接下来我们用一个传统的安装包方式安装。疑问点:mysql运行起来占多少内存?实际数据量小初期占 500Mb多点,后期随着数据的增大内存占有也会变大。
官网下载地址: https://dev.mysql.com/downloads/mysql/
百度云盘下载地址:链接:https://pan.baidu.com/s/1UiKuxMdsHcp6JGl2giip7g
提取码:8v9v
tar -Jxf mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz
解压mysql-8.0.35-linux-glibc2.12-x86_64.tar.xz后会出现一个为mysql-8.0.35-linux-glibc2.12-x86_64的目录,将其修改为mysql
mv mysql-8.0.35-linux-glibc2.12-x86_64 mysql
[root@localhost local]# groupadd mysql
[root@localhost local]# useradd -r -g mysql mysql
[root@localhost mysql]# passwd mysql
更改用户 mysql 的密码 。
新的 密码:Aa111111
重新输入新的 密码:Aa111111
passwd:所有的身份验证令牌已经成功更新。
my.cnf存在,因为centos7中安装了mariadb。
[mysqld]
# 安装路径
basedir = /usr/local/mysql
#数据存储路径
datadir = /usr/local/mysql/data
#端口
port = 3306
# server_id = .....
socket = /tmp/mysql.sock
#编码方式
character-set-server = utf8mb4
collation_server = utf8mb4_general_ci
skip-name-resolve
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
lower_case_table_names=1
# 设置密码格式
#default_authentication_plugin=mysql_native_password
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
把配置文件中没用替换成上面的内容。
配置文件中注意点:
- character-set-server = utf8mb4:表示mysql服务器级别默认的字符集编码,最好设置为utf8mb4;
- lower_case_table_names=1:表示mysql中将表名一律转为小写;(其实取值有0、1或2,其中2是最理想的状态,但是这个配置在window、linux、macos下表现的不一致,所以还是取1吧,只不过取1后,所有的表名都强制小写。)
mkdir data
在mysql目录下执行下面的两行命令(.在linux环境下表示当前目录)
chown -R mysql .
chgrp -R mysql .
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lower_case_table_names=1
执行结束后用下面的命令查找到数据库默认的root用户的密码:
cat /usr/local/mysql/data/error.log |grep “root@”
[root@VM-4-6-centos etc]# cat /usr/local/mysql/data/error.log |grep "root@"
2023-12-26T07:31:58.214969Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: i->wW8_Mpr7f
:冒号后面的全是密码。
在mysql目录下执行下面的命令,出现 SUCCESS就是启动成功。
./support-files/mysql.server start
[root@localhost mysql]# ./support-files/mysql.server start
Starting MySQL............ SUCCESS!
[root@localhost mysql]# ps -aux|grep mysql
./bin/mysql -uroot -p
输入密码:i->wW8_Mpr7f
修改root 密码如下sql:
alter user 'root'@'localhost' identified by '1qaWsX';
修改成功后 exit 退出登录。
创建远程登录对象:CREATE USER ‘root’@‘%’ IDENTIFIED BY ‘Aa111111’;
授权远程登录:grant all privileges on . to ‘root’@‘%’ with grant option;
强制刷新:flush privileges;
在mysql 目录下
启动命令:./support-files/mysql.server start
重启命令:./support-files/mysql.server restart
停止命令:./support-files/mysql.server stop
客户端连接:./bin/mysql -hlocalhost -P3306 -uroot -p 简写为:./bin/mysql -uroot -p
由于mysql8的密码采用了“caching_sha2_password”模式,而老版的是“mysql_native_password”模式,所以造成很多客户端连接不上。
解决方案: 1. 升级客户端 2.修改mysql8的密码模式
1.在my.cnf 文件中添加:default_authentication_plugin=mysql_native_password 然后重启mysql,之后新建的用户都是“mysql_native_password”模式。
2.对于安装时已经存在的用户(比如:root)或想给单个用户设定密码模式的可以采用如下命令:
alter user 'root'@'%' identified with mysql_native_password by 'Aa111111';
flush privileges;
到这里mysql8 安装结束,并且可以远程访问了。