首页 > 数据库 >ubuntu 22.04 安装MySQL8后的基本设置

ubuntu 22.04 安装MySQL8后的基本设置

时间:2024-06-07 16:22:10浏览次数:28  
标签:MySQL8 mysql 用户 密码 22.04 ubuntu password root admin

安装

sudo apt update
sudo apt upgrade
sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql

初始化配置

MySQL初始化配置以及设置 root 密码

  • 初始化 MySQL 安全配置
sudo mysql_secure_installation

这个命令会提示您进行一系列的安全设置,包括:

  • 是否设置 root 密码
    • 是否删除匿名用户
    • 是否禁止 root 用户远程登录
    • 是否删除测试数据库
    • 是否立即应用以上更改

密码策略

seeding@ihopeso:~$ sudo mysql_secure_installation
[sudo] password for seeding: 

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: y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Skipping password set for root as authentication with auth_socket is used by default.
If you would like to use password authentication instead, this can be done with the "ALTER_USER" command.
See https://dev.mysql.com/doc/refman/8.0/en/alter-user.html#alter-user-password-management for more information.

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done! 

策略向导

  1. 当您运行 mysql_secure_installation 命令时,它会提示您是否要设置 VALIDATE PASSWORD 组件。这个组件可以对密码强度进行检查,帮助您设置更安全的密码。

  2. 如果您选择"y"继续设置 VALIDATE PASSWORD 组件,接下来它会让您选择密码策略,可以选择 LOW、MEDIUM 或 STRONG。选择更高的级别可以增加密码复杂度要求。

  3. 之后它会要求您设置 root 用户的密码。由于您使用的是 MySQL 8.0,它会跳过这一步,因为 MySQL 8.0 默认使用 auth_socket 插件进行 root 用户身份验证,不需要设置密码。

  4. 接下来它会提示您是否删除匿名用户、禁止 root 用户远程登录,以及删除测试数据库等。您可以根据实际需求选择是否执行这些操作。

密码策略低中高

MySQL 的 VALIDATE PASSWORD 组件中不同密码策略的区别:

  1. LOW 策略

密码最小长度为 8 个字符。
不要求包含大写字母、小写字母、数字或特殊字符。
这是最宽松的密码策略,更容易被暴力破解。不建议在生产环境中使用。

  1. MEDIUM 策略

密码最小长度为 8 个字符。
密码必须包含大写字母、小写字母和数字中的两种。
不需要包含特殊字符。
这是一个较为安全的默认策略。

  1. STRONG 策略

密码最小长度为 8 个字符。
密码必须包含大写字母、小写字母、数字和特殊字符中的三种。
这是最安全的策略,但可能会让用户设置密码变得比较困难。
使用更高级别的密码策略可以提高密码的安全性,但同时也会增加用户设置密码的难度。通常建议使用 MEDIUM 策略,它在安全性和用户体验之间达到了较好的平衡。

如果您有特殊需求,也可以根据实际情况调整这些参数,比如将密码最小长度调整为 12 个字符。但是请务必权衡安全性和用户体验,找到最合适的设置。

查看密码策略

  • 设置密码失败的时候,可能需要使用该命令
SHOW VARIABLES LIKE 'validate_password%';

查看当前用户

mysql> SELECT User, Host, authentication_string, plugin FROM mysql.user;
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| debian-sys-maint | localhost | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | mysql_native_password |
+------------------+-----------+-----------------------+

设置Root密码【本地】

  • 设置root本地密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';

设置远程访问【远程】

步骤一

root有一些默认设置,加上root可以设置本地密码和远程密码,设置起来比较麻烦,所以选择新建一个用户admin并赋予远程权限

  • 创建远程用户admin并设置密码(本地和远程可以不一样)
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'your_new_password' WITH GRANT OPTION;
CREATE USER 'admin'@'%' IDENTIFIED BY 'Remote@8123';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;

#或者
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%';
FLUSH PRIVILEGES;
  • 以上命令进阶理解,带不带WITH GRANT OPTION

这两条 SQL 语句确实很相似,但它们之间还是有一些细微的差别。

  1. GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;

    • 这条语句会授予 'admin'@'%' 用户对所有数据库和表的所有权限,包括 GRANT OPTION
    • GRANT OPTION 意味着该用户有权限将自己的权限授予其他用户。
    • 拥有 GRANT OPTION 权限的用户可以创建新用户并授予权限。
  2. GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%';

    • 这条语句会授予 'admin'@'%' 用户对所有数据库和表的所有权限。
    • 但是该用户没有 GRANT OPTION 权限,也就无法将自己的权限授予其他用户。

总的来说,这两条语句都会授予 'admin'@'%' 用户对所有数据库和表的完全访问权限。不同之处在于第一条语句还赋予了该用户授权其他用户的能力。

如果您只是想给 'admin'@'%' 用户分配最高权限,使用第二条语句就足够了。但如果您还希望该用户能够管理其他用户的权限,那么使用第一条语句会更合适。

  • 示例:创建一个用户blog设置密码Blog@8123对数据库blog拥有所有权限
CREATE USER 'blog'@'%' IDENTIFIED BY 'Blog@8123';
GRANT ALL PRIVILEGES ON blog.* TO 'blog'@'%';
FLUSH PRIVILEGES;

看来您在尝试授予 root 用户远程访问权限时遇到了权限问题。错误 1410 表示当前连接的用户没有创建新用户的权限。

出现这个问题可能有以下几种原因:

  1. 您当前登录的 MySQL 用户不是 root 用户。只有 root 用户才有创建新用户的权限。请确保您是以 root 用户登录的。

  2. MySQL 8.0 中默认 root 用户无法直接修改自己的权限。您需要先创建一个具有 CREATE USER 权限的用户,然后使用该用户来修改 root 用户的权限。

如果您是以 root 用户登录的,可以尝试以下步骤:

  1. 创建一个具有 CREATE USER 权限的用户:

    CREATE USER 'admin'@'%' IDENTIFIED BY 'your_admin_password';
    GRANT CREATE USER ON *.* TO 'admin'@'%';
    GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
  2. 使用 admin 用户登录 MySQL:

    mysql -u admin -p
    
  3. 然后使用 admin 用户执行授权命令:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    

这样就可以成功为 root 用户授予远程访问权限了。

步骤二

允许所有主机远程访问还需要修改mysql配置文件

$ vim /etc/mysql/mysql.conf.d/mysqld.cnf

# 修改一下内容
#bind-address           = 127.0.0.1
bind-address            = 0.0.0.0
  • 操作完成后可能需要重启下服务
sudo systemctl restart mysql

常用命令

sudo mysql -u root -p

常用 MySQL 命令

  • 查看数据库列表: SHOW DATABASES;
  • 创建数据库: CREATE DATABASE database_name;
  • 切换数据库: USE database_name;
  • 创建表: CREATE TABLE table_name (column1 datatype, column2 datatype, ...);
  • 查看表结构: DESCRIBE table_name;
  • 插入数据: INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
  • 查询数据: SELECT * FROM table_name;

设置密码注意事项

  • mysql_native_password 是 MySQL 8.0 默认使用的身份验证插件。

  • 如果您在这里遇到问题,很可能是因为 MySQL 的密码策略设置过于严格。

  • 检查密码策略

SHOW VARIABLES LIKE 'validate_password%';

这个命令可以查看当前 MySQL 的密码策略设置,包括:

  • validate_password.policy:密码强度策略,可设置为 LOW、MEDIUM 或 STRONG。
  • validate_password.length:密码最小长度。
  • validate_password.mixed_case_count:密码中必须包含的大小写字母个数。
  • validate_password.number_count:密码中必须包含的数字个数。
  • validate_password.special_char_count:密码中必须包含的特殊字符个数。

调整密码策略

如果当前设置过于严格,可以根据需要适当调整这些参数,例如:

SET GLOBAL validate_password.policy = 'LOW';
SET GLOBAL validate_password.length = 6;

调整完密码策略后,再次尝试设置 root 密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';

注意,在 IDENTIFIED BY 之前使用 IDENTIFIED WITH mysql_native_password。这是 MySQL 8.0 中设置密码的正确语法。

在 MySQL 8.0 中,root 用户确实可以同时拥有两个不同的密码,一个用于本地登录,一个用于远程登录。

  1. 首先,使用以下命令设置 root 用户的本地登录密码:

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';
    
  2. 然后,使用以下命令设置 root 用户的远程登录密码:

    ALTER USER 'root'@'%' IDENTIFIED BY 'Remoteyour_new_password';
    

    注意,这里我们没有使用 IDENTIFIED WITH mysql_native_password。因为 root 用户的远程登录密码可以与本地密码不同。

  3. 最后,执行以下命令刷新权限:

    FLUSH PRIVILEGES;
    

这样就可以同时设置 root 用户的本地登录密码和远程登录密码了。在您的示例中,确实不需要在第 4 步中再次输入密码,因为它已经在第 2 步中设置过了。

现在,root 用户可以使用 your_new_password 在本地登录,使用 Remoteyour_new_password 在远程登录。这样可以提高安全性,因为即使一个密码泄露,另一个密码也不会受影响。

MySQL 8.0 对 root 用户有一些默认设置,可能导致无法直接修改远程访问密码。您可以尝试先删除用户,然后重新创建。

DROP USER 'admin'@'%';
CREATE USER 'admin'@'%' IDENTIFIED BY 'Remoteyour_new_password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

标签:MySQL8,mysql,用户,密码,22.04,ubuntu,password,root,admin
From: https://www.cnblogs.com/laraveler/p/18237416

相关文章

  • Ubuntu22.04 LAMP快速实战
    好的,我来为您详细说明如下步骤:安装LAMP更新软件源并安装必要的软件包:sudoaptupdatesudoaptinstallapache2mysql-serverphplibapache2-mod-phpphp-mysql测试LAMP安装是否成功:访问http://localhost查看Apache默认页面进入/var/www/html目录,创建info.......
  • 新服务器从0到1安装mysql8.0(保姆级教程)
    前提:可以输入命令检测是否安装了mysqlrpm-qa|grepmysql没有安装是什么都没有输出的1.如果系统上已安装有maraidb数据库,需要卸载mariadb yumremovemariadb*-yrm-rf/etc/my.cnfrm-rf/var/lib/mysql/2.如果系统已安装有其他版本的mysql,需提前卸载清空环境r......
  • 在 Ubuntu 环境下 Qt Creator 无法使用搜狗输入法
    在Ubuntu环境下QtCreator无法使用搜狗输入法在Ubuntu中安装QtCreator后,发现无法使用搜狗输入法。切换输入法也没有效果。最初以为是搜狗输入法出了问题,后来发现是QtCreator的问题,需要将搜狗输入法的插件库文件放到Qt的目录下。解决步骤如下:安装locate命令......
  • 虚拟机安装Linux(Ubuntu24)
     1、虚拟机软件    已经上传了下载链接,可进入本人博客的资源下载        https://download.csdn.net/download/qq_42837317/89402103如果下架,请自行查找下载资源。搜索 VMware workstation 172、ubuntu版本    建议按需求安装ubuntu版本,可......
  • 环境配置·Ubuntu1804安装CUDA和Pytorch
    InitUbuntuandchangedeb&pipsourcewgethttps://github.com/blueflylabor/blueflylabor.github.io/blob/main/toolbox/initUbuntu/initUbuntu.shbash./initUbuntu.shCUDA11.6wgethttps://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64......
  • ubuntu系统(香蕉派)设置开机自启动
    以下介绍两种设置开机自启动的方法,分别对应界面中配置和在命令中配置方法1:编辑开启自启动命令sudonano/etc/rc.local#在该文件中添加启动执行命令,需要在exit0之前。添加命令后的&用于设置其支持后台运行。/bin/bash/path/run.sh&#如果没有正常执行权限,更爱rc.loca......
  • ubuntu图形化界面设置开机自启
    ubuntu上找到sessionandStartup或者StartupApplication,这是在设置当中,如果是中文,则是启动应用程序,如果是ubuntu老版本或者镜像版本,直接搜Startup点击添加add,在名称中输入自定义名称,在命令command中输入sh脚本的位置,注释可以不填,然后点击保存然后reboot进行重启,可开机自......
  • ubuntu 20.4 安装 openssl 3.x
    ubuntu20.4自带了openssl1.0.2,升级为openssl3.x的操作如下:#下载openssl源代码压缩包wgethttps://www.openssl.org/source/openssl-3.0.10.tar.gz#安装编译包sudoapt-getinstall-yg++sudoapt-getinstall-ymakesudoapt-getinstall-yperl#解压源代......
  • Ubuntu server 24 (Linux) 安装部署smartdns 搭建智能DNS服务器
    SmartDNS是推荐本地运行的DNS服务器,SmartDNS接受本地客户端的DNS查询请求,从多个上游DNS服务器获取DNS查询结果,并将访问速度最快的结果返回给客户端,提高网络访问速度和准确性。支持指定域名IP地址,达到禁止过滤的效果。一安装smartdns1 关闭Ubuntu自带dns解析systemd-resolv......
  • 【ubuntu使用记录】—— 如何使用vim编译器如何写入保存文件和linux常用的操作指令记
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言vim编译器的使用1.写入的操作2.保存的操作常用的系统操作指令1.查看系统配置2.查看库的版本3.基本操作指令4.解压和压缩相关指令(1)安装rar和unrar工具(2)使用前言在Ubuntu中,使用......