【究极详细版】Ubuntu安装配置MySQL

安装

通过包管理工具apt安装,在ubuntu20.04下mysql版本默认为8.0,而ubuntu18.04在截至本文完成时默认版本为5.7。如果想在20.04下安装5.7版本,可以看这篇连接

首先,更新软件包列表索引:

sudo apt update

安装MySQL:

sudo apt install mysql-server

查看MySQL版本:

mysql --version

由于本地系统为ubuntu20.04,MySql版本号为8.0。
version

查看服务状态,

service mysql status

status

状态正常,到此安装完毕!

配置

此时,mysql客户端已经作为服务器的依赖安装到本地,故可以通过命令行登录服务器。mysql8.0,root 用户默认通过 auth_socket 插件授权,而 auth_socket 插件通过 Unix socket 文件来验证所有连接到 localhost 的用户。这意味着你不能以用户–密码的方式,登录root账户。通过指令以root身份登录:

sudo mysql

在这里插入图片描述

但是,通过第三方程序是无法连接到数据库的,例如JDBC、pymysql等。可以通过修改mysql下的user表,配置密码方式以root身份登录:

use mysql;
select user, host, plugin from user;

在这里插入图片描述

将root对应的plugin由 auth_socket 改为 mysql_native_password 即使是mysql8.0也是,否则影响后续远程连接:

#MySQL8.0必须先执行此步骤设置密码,MySQL5.7可以选择先安装下面的secure!!!
alter user 'root'@'localhost' identified with mysql_native_password by '密码';

flush privileges;

exit;

至此,可以不用输入sudo,通过密码的方式登录数据库:

mysql -uroot -p

在这里插入图片描述

增强数据库服务的安全性

执行:

sudo mysql_secure_installation

在这里插入图片描述

键入Enter后继续,
在这里插入图片描述

设置root用户密码,并反馈当前密码强度,询问是否确认密码:
在这里插入图片描述

询问三个问题,并根据提供的答案来设置系统的安全性。

  1. 是否关删除匿名测试用户的信息。
  2. 是否禁止远程root登录。只允许本地登录root用户,并拒绝远程连接。
  3. 是否删除 test 数据库。

根据自身需求键入相应的y or n

最后输入 y ,重新加载特权表使上述配置生效。返回 All Done!,设置成功。

远程连接

如何连接ubuntu服务器下的mysql数据库?

修改配置文件:

#MySQL8.0!!!
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 
#MySQL5.7!!!
sudo vim /etc/my.cnf 

注释下图标记行,解除地址绑定:
在这里插入图片描述

重启mysql服务:

sudo service mysql restart

登录mysql后执行:

use mysql;
update user set host='%' where user='root';
flush privileges;

#MySQL8.0执行这行
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
#MySQL5.7执行这行
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

flush privileges;

在这里插入图片描述

卸载

sudo apt purge mysql-* # mysql后用tab补全,把所有与mysql相关的卸载

sudo rm -rf /etc/mysql/ /var/lib/mysql

sudo apt autoremove

sudo apt autoclean

忘记密码(ERROR 1045)

在这里插入图片描述

修改配置文件,在[mysqld]后添加 skip-grant-tables (登录时跳过权限检查):

#MySQL8.0!!!
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 
#MySQL5.7!!!
sudo vim /etc/my.cnf 

在这里插入图片描述

重启服务后可以无密码登录mysql:

sudo service mysql restart

mysql

在这里插入图片描述

mysql8.0
use mysql; 
#必须先将authentication_string置为空!
update user set authentication_string='' where user='root';

flush privileges;
#设置新密码
ALTER user 'root'@'%' IDENTIFIED BY '新密码';
mysql5.7
use mysql; 
update user set authentication_string = password('新密码') where user = 'root';

最后记得删除配置文件中的 skip-grant-tables 并重启服务,否则会影响远程连接!

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

查看密码策略:

SHOW VARIABLES LIKE 'validate_password%';

在这里插入图片描述

参照上图变量名修改策略:

set global validate_password.policy=0
set global validate_password.length=1;

最后修改密码:

alter user 'root'@'%' identified by 'root';

登录成功:
在这里插入图片描述

分布式事务是指在分布式系统中,跨越多个节点的事务操作。在Redis中,分布式事务是通过MULTI、EXEC、WATCH等命令实现的。下面是Redis分布式事务的详细剖析: 1. MULTI命令 MULTI命令表示开启一个事务。在一个事务中,所有命令都不会立即执行,而是先进入队列中等待执行。如果执行到EXEC命令,那么事务中的所有命令会一次性地执行。 2. EXEC命令 EXEC命令表示执行一个事务中的所有命令。如果在执行事务期间,没有其他客户端修改了事务中所监视的键值,那么事务中的所有命令都会被执行。如果出现冲突,那么事务中的所有命令都会被放弃。 3. WATCH命令 WATCH命令表示监视一个或多个键值,如果这些键值在事务执行期间被其他客户端修改,那么事务就会被放弃。如果在执行WATCH命令和EXEC命令之间,被监视的键值发生了变化,那么事务就会被放弃。 4. UNWATCH命令 UNWATCH命令用于取消对一个或多个键值的监视。 5. DISCARD命令 DISCARD命令用于放弃一个事务,事务中的所有命令都会被放弃。 分布式事务的优劣 Redis分布式事务具有以下优点: 1. 原子性:事务中的所有命令要么全部执行成功,要么全部执行失败。 2. 一致性:事务中的所有命令都被执行之后,数据库状态一定是一致的。 3. 隔离性:事务中的所有命令都在一个隔离环境中执行,不会被其他事务干扰。 4. 可靠性:Redis分布式事务具有高可靠性,即使节点出现故障,也不会影响整个系统的运行。 但是Redis分布式事务也存在以下缺点: 1. 性能:在开启事务期间,所有命令都不会立即执行,而是先进入队列中等待执行,这会带来一定的性能损失。 2. 并发性:由于Redis分布式事务采用乐观锁机制,所以在高并发环境下容易出现冲突,导致事务失败。 3. 可扩展性:Redis分布式事务的可扩展性不如其他分布式事务,因为它只能在单个Redis节点中执行。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值