1. 查看系统中是否已经安装了mariadb 执行:yum list installed | grep mariadb
若已经存在,则删除 执行: yum remove mariadb
2.下载需要安装的压缩文件,从官网下载,文件为名字为 mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz
该文件是tar.xz后缀。需要tar xvJf 解压
3.将压缩文件解压到/usr/local/目录下
tar xvJf xxx.tar.xz 由于此处使用的是tar.gz文件,要使用该命令
解压后文件位于/usr/local目录下,并修改文件夹名称 mysql8
4.将 /usr/local/mysql8/bin 这个路径追加到etc/profile文件的PATH中,若PATH已配置了其他的,则追加
如下所示:
export JAVA_HOME=/opt/jdk1.8.0_121
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}:$PATH:/usr/local/mysql8/bin
由于此处已经配置了JAVA_HOME JRE_HOME CLASSPATH JAVA_PATH PATH ,只需要在PATH中添加:/usr/local/mysql8/bin
再执行source profile,重新载入该配置文件即可生效。这样就能在linux中调用mysql命令
5.mysql --version 查看安装的mysql版本
显示如下
[root@VM-0-8-centos local]# mysql --version
mysql Ver 8.0.31 for Linux on x86_64 (MySQL Community Server - GPL)
[root@VM-0-8-centos local]#
6.创建用户组、用户
创建用户组:groupadd
创建用户:useradd(-r 创建系统用户,-g 指定用户组)
执行如下代码:创建用户组,并将新建的用户添加到用户组里面
groupadd mysql
useradd -r -g mysql mysql
7.创建存放mysql数据的目录 放在 /data/mysql8_data下
mkdir -p /data/mysql8_data
该目录是用于存放数据的,而mysql的安装目录在/usr/local/mysql8目录下
8.赋予权限
将mysql存放数据的目录修改拥有者和组权限,以前是root用户root组,修改后是mysql用户,mysql组
chown -R mysql:mysql /data/mysql8_data
再修改目录和文件的访问权限
chmod -R 750 /data/mysql8_data
9.初始化和启动
(1)在 /usr/local/etc/ 下创建 my.cnf 配置文件,用于初始化 MySQL 数据库,在启动时候,需要指明启动mysql服务时调用的是哪一个配置文件,后面有说明。
在本地先准备一个文件my.cnf
内容如下,也可以可先建立文件,再将内容复制到文件里,若文件内容较多,可以分多次拷贝。
[mysql]
# 默认字符集
default-character-set=utf8mb4
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
server-id = 3306
user = mysql
socket = /tmp/mysql.sock
# 安装目录
basedir = /usr/local/mysql8
# 数据存放目录
datadir = /data/mysql8_data/mysql
log-bin = /data/mysql8_data/mysql/mysql-bin
innodb_data_home_dir =/data/mysql8_data/mysql
innodb_log_group_home_dir =/data/mysql8_data/mysql
# 日志及进程数据的存放目录
log-error =/data/mysql8_data/mysql/mysql.log
pid-file =/data/mysql8_data/mysql/mysql.pid
# 服务端字符集
character-set-server=utf8mb4
lower_case_table_names=1
autocommit =1
##### 以上涉及文件夹明,注意修改
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 1024
sort_buffer_size = 4M
net_buffer_length = 8K
read_buffer_size = 4M
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 64M
thread_cache_size = 128
#query_cache_size = 128M
tmp_table_size = 128M
explicit_defaults_for_timestamp = true
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
binlog_format=mixed
binlog_expire_logs_seconds =864000
# 创建表时使用的默认存储引擎
default_storage_engine = InnoDB
innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
transaction-isolation=READ-COMMITTED
[mysqldump]
quick
max_allowed_packet = 16M
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 4M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
--------------------------------------说明----------------------------------------
简介: lower_case_table_names 是mysql设置大小写是否敏感的一个参数。
1.参数说明:
lower_case_table_names=0 表名存储为给定的大小和比较是区分大小写的
lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=2 表名存储为给定的大小写但是比较的时候是小写的
unix,linux下lower_case_table_names默认值为 0 .Windows下默认值是 1 .Mac OS X下默认值是 2
2.查看方法:
进入mysql命令行 执行以下任一语句查看:
show variables like ‘lower_case_table_names’;
select @@lower_case_table_names;
更改数据库参数文件my.cnf来修改该属性我的值。
在mysqld下 添加或修改 lower_case_table_names = 1
之后重启数据库,只能通过文件的方式进行修改
--------------------------------------说明----------------------------------------
(2)初始化
需要进入 /usr/local/mysql/bin,若添加了 PATH 变量可忽略。本人已经添加了PATH配置了mysql的bin路径指向,可以在linux中执行mysql的命令
初始化命令如下:
--defaults-file:指定配置文件(要放在--initialize 前面)
--user: 指定用户
--basedir:指定安装目录
--datadir:指定初始化数据目录
--intialize-insecure:初始化无密码(否则生成随机密码)
执行如下代码即可:
mysqld --defaults-file=/usr/local/etc/my.cnf --basedir=/usr/local/mysql8 --datadir=/data/mysql8_data/mysql --user=mysql --initialize-insecure
(3)启动MySql
查看 MySQL 的 /bin 下是否包含 mysqld_safe,用于后台安全启动 MySQL,经过查看确实有,位置如下
[root@VM-0-8-centos bin]# pwd
/usr/local/mysql8/bin
[root@VM-0-8-centos bin]# ls
ibd2sdi my_print_defaults mysqld mysql_migrate_keyring mysql_upgrade
innochecksum mysql mysqld-debug mysqlpump perror
lz4_decompress mysqladmin mysqld_multi mysql_secure_installation zlib_decompress
myisamchk mysqlbinlog mysqld_safe mysqlshow
myisam_ftdump mysqlcheck mysqldump mysqlslap
myisamlog mysql_config mysqldumpslow mysql_ssl_rsa_setup
myisampack mysql_config_editor mysqlimport mysql_tzinfo_to_sql
[root@VM-0-8-centos bin]#
启动mysql,并读取制定的配置文件,命令如下:
/usr/local/mysql8/bin/mysqld_safe --defaults-file=/usr/local/etc/my.cnf &
若添加了PATH变量,可省略如下
mysqld_safe --defaults-file=/usr/local/etc/my.cnf &
查看mysql服务是否启动成功
ps -ef|grep mysql
(4)登录
mysql -uroot -p 输入密码的时候直接回车进入mysql
(5)修改密码
由于mysql8和mysql5版本的不同他们的加密策略也不同,所以要将mysql8的策略改一下,保证navicate能远程登录。
首次修改:
MySQL 初始化的 root 用户、新创建的用户,都需要设置首次密码。建议使用本地密码插件 mysql_native_password。
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
# 刷新权限
FLUSH PRIVILEGES;
平时修改:可在 Linux 或 MySQL 中修改。
Linux 命令行 mysqladmin -u用户名 -p旧密码 password 新密码
登录mysql后命令执行
# 设置密码
SET PASSWORD FOR '用户名'@'主机' = PASSWORD(‘密码');
# 刷新权限
FLUSH PRIVILEGES;
(6)关闭MySql服务
在linux 中 执行 mysqladmin -uroot -p shutdown 回车后输入密码即可
远程连接MySql
首先进入 mysql 数据库,查看当前用户user表
USE mysql;
SELECT user,host,plugin,authentication_string FROM user;
host 字段 表示可访问当前数据库的主机,目前仅本地可访问。
然后创建用户,以供任意远程访问
# 创建用户
CREATE user 'root'@'%';
# 设置首次密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 授权用户所有权限,刷新权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
再次查看时候,发现已创建一个可被任意远程主机访问的 root 用户,如下图
为了安全考虑需要将防火墙开启,开放端口3306供远程访问
开放端口:默认端口号 3306
查看端口状态:no 表示未开启
firewall-cmd --query-port=3306/tcp
永久开放端口:
firewall-cmd --add-port=3306/tcp --permanent
重启防火墙:
systemctl restart firewalld
备注:查看mysql端口: