Debian直接安装mysql8

Debian直接安装mysql8

    • 为什么不用docker安装MySQL
      • 1、数据安全问题
      • 2、性能问题
      • 3、状态问题
      • 4、资源隔离方面
    • Debian10 安装MySQL8
      • 配置 MySQL 存储库
      • 安装 MySQL
      • 保护 MySQL
      • 连接到 MySQL 服务器
      • 配置远程可以连接
      • mysql 创建新用户并给授权指定的数据库权限
        • 1、使用 root 管理员登陆 mysql
        • 2、创建新用户
        • 3、给该用户添加权限
        • 4、删除用户
      • 配置mysql大小写不敏感(重要)
        • 查看现有配置
        • 安装后再修改配置(会删除原有的数据和设置!!!慎用!!!!)
    • 常用命令

为什么不用docker安装MySQL

1、数据安全问题

容器随时可以停止、或者删除。当容器被rm掉,容器里的数据将会丢失。为了避免数据丢失,用户可以使用数据卷挂载来存储数据。

但是容器的 Volumes 设计是围绕 Union FS 镜像层提供持久存储,数据安全缺乏保证。如果容器突然崩溃,数据库未正常关闭,可能会损坏数据。另外,容器里共享数据卷组,对物理机硬件损伤也比较大。

2、性能问题

数据库的性能瓶颈一般出现在IO上面,MySQL 属于关系型数据库,对IO要求较高。当一台物理机跑多个时,IO就会累加,导致IO瓶颈,大大降低 MySQL 的读写性能。

3、状态问题

在 Docker 中水平伸缩只能用于无状态计算服务,而不是数据库。

Docker 快速扩展的一个重要特征就是无状态,具有数据状态的都不适合直接放在 Docker 里面,如果 Docker 中安装数据库,存储服务需要单独提供。

目前,腾讯云的TDSQL(金融分布式数据库)和阿里云的Oceanbase(分布式数据库系统)都直接运行中在物理机器上,并非使用便于管理的 Docker 上。

4、资源隔离方面

资源隔离方面,Docker 确实不如虚拟机KVMDocker是利用Cgroup实现资源限制的,只能限制资源消耗的最大值,而不能隔绝其他程序占用自己的资源。如果其他应用过渡占用物理机资源,将会影响容器里 MySQL 的读写效率。

Debian10 安装MySQL8

配置 MySQL 存储库

访问Debian最新的配置源
复制到下面配置
目前最新的是mysql-apt-config_0.8.23-1_all.deb

要将 MySQL APT 存储库添加到系统,请转到存储库下载页面并使用以下 wget 命令下载最新的发行包:

wget http://repo.mysql.com/mysql-apt-config_0.8.23-1_all.deb

下载完成后,以具有 sudo 权限的用户身份安装发行包:

sudo apt install ./mysql-apt-config_0.8.23-1_all.deb

Debian直接安装mysql8_第1张图片
然后ok

安装 MySQL

通过运行以下命令更新包列表并安装 MySQL 服务器包:

sudo apt update
sudo apt install mysql-server

Debian直接安装mysql8_第2张图片

安装程序将要求您设置 MySQL root 密码。现在不要设置密码(留空),我们待会再设置。

接下来,您将看到一条消息,通知您有关新的 MySQL 8 身份验证的信息。在选择默认的 MySQL 8 身份验证插件之前,请确保您的应用程序支持它。
Debian直接安装mysql8_第3张图片
安装完成后, MySQL 服务将自动启动,您可以通过键入以下内容来验证它:

sudo systemctl status mysql

Debian直接安装mysql8_第4张图片

保护 MySQL

运行该 mysql_secure_installation 命令设置 root 密码并提高 MySQL 安装的安全性:

sudo mysql_secure_installation
Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No:

系统将要求您配置 VALIDATE PASSWORD PLUGIN 用于测试 MySQL 用户密码强度的内容。密码验证策略有三个级别:低,中和强。如果你不想来设置验证密码插件就直接按下 ENTER

Please set the password for root here.

New password:

Re-enter new password:

设置密码如果提示

 SET PASSWORD has no significance for user 'root'@'localhost' as the authentication
  method used doesn't store authentication data in the MySQL server. 
  Please consider using ALTER USER instead if you want to change authentication parameters.
 

SET PASSWORD对用户“root”@'localhost“没有意义,因为使用的身份验证方法不会将身份验证数据存储在MySQL服务器中。如果要更改身份验证参数,请考虑改用 ALTER USER。

断开重新连接服务器

sudo mysql

设置密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'qq147.';

提示
Query OK, 0 rows affected (0.01 sec)

然后退回终端
exit;

再运行该 mysql_secure_installation 命令设置 root 密码并提高 MySQL 安装的安全性

sudo mysql_secure_installation

Debian直接安装mysql8_第5张图片

连接到 MySQL 服务器

要通过终端与 MySQL 交互,请使用 mysql 作为 MySQL 服务器软件包依赖项安装的客户端。

如果您选择默认身份验证方法以 root 用户身份登录 MySQL 服务器:

sudo mysql

否则,如果您选择了旧的身份验证方法来登录类型:

mysql -u root -p

配置远程可以连接

# mysql -uroot -p
mysql -uroot -p

use mysql;

# 查询
select 'host','user' from user where user = 'root';

update user set host = '%' where user = 'root';

flush privileges;

第一句:是以权限用户root登录;

第二句:选择mysql库;

第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称);

第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址;

第五句:刷新MySQL的系统权限相关表;

第六句:再重新查看user表时,有修改。

mysql 创建新用户并给授权指定的数据库权限

1、使用 root 管理员登陆 mysql
mysql -uroot -p;
2、创建新用户
//低版本数据库
create user '用户名'@'%' identified by '密码';
//高版本数据库
create user '用户名'@'%' identified with mysql_native_password by '密码';
‘%’ - 所有情况都能访问
‘localhost’ - 本机才能访问
’111.222.33.44‘ - 指定 ip 才能访问

修改密码:

alter user '用户名'@'%' identified by '密码';

这个时候访问,是除了默认生成information_schema和test数据库,看不到任何其它的数据库信息
3、给该用户添加权限
//指定数据库
grant all privileges on 想授权的数据库.* to '用户名'@'%';
//全部数据库
grant all privileges on *.* to '用户名'@'%';

all 可以替换为 select,delete,update,create,drop

4、删除用户
delete from mysql.user where user='用户名';

配置mysql大小写不敏感(重要)

查看现有配置
show global variables like '%case%';
 
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | ON    |
| lower_case_table_names | 0     |

  • lower_case_file_system:表示当前系统文件是否大小写敏感(ON为不敏感,OFF为敏感),只读参数,无法修改。
  • lower_case_table_names:表示表名是否大小写敏感,可以修改。
  • lower_case_table_names = 0时,mysql会根据表名直接操作,大小写敏感。
  • lower_case_table_names = 1时,mysql会先把表名转为小写,再执行操作。
安装后再修改配置(会删除原有的数据和设置!!!慎用!!!!)

mysql8.0修改大小写敏感配置方法

在 MySQL 8 中,数据目录初始化之后,不再允许更改lower_case_table_names = 1的 值;

MySQL 基于某些原因,禁止在重新启动 MySQL 服务时将 lower_case_table_names 设置 成不同于初始化 MySQL 服务时设置的 lower_case_table_names 值。

也就是说启动(重启)MySQL 时,lower_case_table_names的值必须与初始化 MySQL 时(安装 MySQL 后的首次启动)的值相同。

为已安装的MySQL8设置不区分大小写
1、停止MySQL

2、删除数据目录,即删除 /var/lib/mysql 目录、

3、在MySQL配置文件( /etc/my.cnf )中添加 lower_case_table_names=1

4、启动 MySQL

vi /etc/mysql/mysql.conf.d/mysqld.cnf

添加配置
# 设置大小写不敏感
lower_case_table_names = 1
#### 重启
service mysql restart

5、重新配置可以root可以远程远程连接

# 连接
mysql -uroot -p

#设置root可以远程连接
mysql> use mysql;

mysql> update user set host = '%' where user = 'root';


mysql> select user, plugin from mysql.user;
+------------------+-----------------------+
| user             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.infoschema | caching_sha2_password |
| mysql.session    | caching_sha2_password |
| mysql.sys        | caching_sha2_password |
+------------------+-----------------------+
4 rows in set (0.00 sec)


mysql> update user set plugin='mysql_native_password' where user='root';


mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'qq147.';

mysql> flush privileges;

常用命令

# 以m为单位看看你的小水管的内存剩余多少
free -m

# 查看mysql进程
ps -ef | grep mysql

# 终端通过service暂停
service mysql stop

# 终端通过service开启
service mysql start


#连接mysql
# mysql -uroot -p
mysql -uroot -p
#Enter you pwd:...

# 展示数据库
show databases

你可能感兴趣的:(日常技能,debian,运维,mysql)