MySQL安装配置

date
Apr 4, 2023
slug
mysqlconfig
status
Published
tags
MySQL
summary
type
Post
💡
以下代码示例是基于MySQL 8.x

一、安装

1、Centos上安装

  1. Centos 上安装 Mysql-server重设 root 密码
  1. 在 CentOS7 上使用 yum 安装 MySQL 5.7

2、Mac上安装

# 安装
$ brew install mysql

# 启动
$ brew services restart mysql

# 输入root密码,并执行引导式配置
$ mysql_secure_installation
附安装后的内容提示
We've installed your MySQL database without a root password. To secure it run:
    mysql_secure_installation

MySQL is configured to only allow connections from localhost by default

To connect run:
    mysql -u root

To restart mysql after an upgrade:
  brew services restart mysql
Or, if you don't want/need a background service you can just run:
  /opt/homebrew/opt/mysql/bin/mysqld_safe --datadir=/opt/homebrew/var/mysql

3、启动

启动MySQL Server有2种方式:
  • 第一种就是读取配置文件进行启动MySQL Server
  • 第二种就是执行mysqld的时候,指定其具体参数
配置文件和具体参数其实是一样的,仅仅是优先级的区别。

二、配置

MySQL的配置较多,可通过mysql -—help 来查看关键的配置项和其当前值。同时也注意到,配置文件有以下几个(以Mac下brew安装方式为例):
  • /etc/my.cnf
  • /etc/mysql/my.cnf
  • /opt/homebrew/etc/my.cnf
  • ~/.my.cnf
上述文件不存在时,可以手动创建。

1、配置文件

其格式和Windows下的ini 文件内容格式很像:
[server]
...
[mysqld]
...
[mysqld_safe]
...
[client]
...
[mysql]
...
[mysqladmin] 
...
对于配置优先级的问题,采用如下规则:
  • 若是在命令行指定了配置项,则会覆盖文件的配置项。
  • 若在配置文件出现重复项的时候,以最后一项参数为准。重复的命令行配置项时也如此。

2、配置说明

 

三、权限

1、用户

创建用户
-- 创建用户
create user 'newuser'@'%' identified by 'password';

-- 创建数据库
create database newdb default character set utf8mb4 collate utf8mb4_unicode_ci;
CREATE DATABASE `strapiapp` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 授权用户访问数据库
grant all on newdb.* to 'newuser'@'%';

-- 刷新权限
flush privileges;
删除用户
-- 除删除用户外,DROP USER语句还会从所有授权表中删除所有权限
drop user if exists 'newuser';
修改用户密码
use mysql; 
select user, authentication_string, plugin, host from user;
alter user 'root'@'localhost' identified with caching_sha2_password by '123456';
alter user 'root'@'localhost' identified with mysql_native_password by '123456';
flush privileges;

2、备份恢复数据库

mysqldump -u root -h 192.168.18.166 -P 30767 -p db1 > db_dump.txt
mysql -u root -h 192.168.18.189 -P 3337 -p db2 < db_dump.txt
 

四、概念

hibernate 的 save 方法和 persist 方法的区别

  • save:在事务里执行到 save,会向数据库插一条数据,如果事务里异常,会回滚,删除数据库中插入的数据。
  • persist:在事务里执行到 persist,不会向数据库插数据,事务 commit 了才会插入数据。
 

MySQL 8.0:新的身份验证插件(caching_sha2_password)

 

五、其他

1、Nginx代理转发MySQL
首先通过nginx -V确认已包含--with-stream模块,然后在nginx.conf中添加以下配置
# stream配置
stream {
	server {
		listen 53306; 
		proxy_connect_timeout 1s;
		proxy_timeout 3s;
		proxy_pass 127.0.0.1:3306;    
	}
}

http {
	...
}
stream是和http同等级别的,所以可单独分类管理,如下:
http {
	include /etc/nginx/conf.d/*.conf;
}

stream {
	include /etc/nginx/conf.d/*.stream;
}
注意,stream是不支持不同域名转发不同MySQL的功能。
2、问题记录
1)支持emoji图标
需要指定使用utf8mb4 编码,然后重启服务。
[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
2)MySQL 8 Public Key Retrieval is not allowed
MySQL .NET Connection String Options,将allowPublicKeyRetrieval 改为TRUE
notion image
 
 

参考资料:
 

© 刘德华 2020 - 2025