完全卸载 mariadb
首先删除 mysql:
sudo apt-get remove mysql-*
然后清理残留的数据
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
它会跳出一个对话框,你选择 yes 就好了
安装 mariadb
安装 software-properties-common
这个软件包
sudo apt install software-properties-common
安装 mariaDB,使用 apt 会默认安装稳定版本的数据库,
sudo apt install mariadb-server
如果需要制定版本需要按以下操作:
-
添加 MariaDB 仓库: 首先,您需要添加 MariaDB 的官方 APT 仓库到您的系统中。这可以通过导入 MariaDB 的 GPG 密钥并添加仓库列表来完成。
sudo apt-get install curl curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
这个脚本会自动添加 MariaDB 的 GPG 密钥和 APT 仓库到您的系统中。
-
选择版本: 在添加了 MariaDB 仓库之后,您可以查看可用的 MariaDB 版本。
sudo apt-cache policy mariadb-server
这将列出所有可用的 MariaDB 版本。您可以从列表中选择您需要的版本。
-
安装特定版本的 MariaDB: 使用
apt-get
安装特定版本的 MariaDB 服务器。例如,如果您想安装版本 10.6,可以使用以下命令:
sudo apt-get install mariadb-server-10.6
一旦安装完成,MariaDB 服务将会自动启动。
想要验证数据库服务器是否正在运行,输入:
sudo systemctl status mariadb
保护 MariaDB
MariaDB 服务器有一个脚本叫做 mysql_secure_installation
,它允许你可以很容易提高数据库服务器安全。这里照着做就行了,网上文档都这么说
不带参数运行脚本:
sudo mysql_secure_installation
脚本将会提示你输入 root 密码:
因为你没有设置 root 密码,仅输入回车"Enter”。
Enter current password for root (enter for none):
在下一个提示中,你会被问到是否 MySQL root 用户设置密码:
Set root password? [Y/n] Y
输入 Y。设置 root 密码。
Remove anonymous users? [Y/n] Y。 是否移除匿名用户
Disallow root login remotely? [Y/n] N 是否禁止root用户远程登录数据库
Remove test database and access to it? [Y/n] Y 是否移除测试数据库
Reload privilege tables now? [Y/n] Y 是否重新加载权限表
在 Ubuntu 上, MariaDB 用户默认使用 auth_socket
进行鉴权。这个插件会检查启动客户端的本地系统用户是否和指定的 MariaDB 用户名相匹配。
这里的
auth_socket
是一个身份验证插件,它允许数据库用户通过 Linux 系统的用户账户进行认证。这里是这个过程的详细解释:
- auth_socket 插件:这个插件是 MariaDB 用于身份验证的一个组件。当这个插件被用于一个 MariaDB 用户时,它不会要求用户输入密码,而是检查尝试连接到数据库的客户端的系统用户。
- 本地系统用户匹配:当使用
auth_socket
进行身份验证时,MariaDB 会检查尝试连接的用户是否与 Linux 系统中的一个本地用户账户同名。如果同名,并且该本地用户账户是有效的,那么认证就会成功。例如,如果你有一个名为
john
的 Linux 系统用户,并且你在 MariaDB 中也有一个名为john
的用户,那么john
这个系统用户就可以直接连接到 MariaDB,而无需输入密码。这是因为auth_socket
插件会根据系统用户的身份自动认证。
允许远程访问-设置 mariadb 数据库服务可以被远程访问:
如果需要远程连接 MariaDB,修改配置文件:/etc/mysql/mariadb.conf.d/50-server.cnf
sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
在此示例中,我们将值更改为 0.0.0.0
,将 MySQL 服务器设置为监听所有 IPv4 地址。
bind-address = 0.0.0.0
# skip-networking
在 MySQL 8.0 和更高版本中,bind-address
指令可能不存在。在这种情况下,请将 bind-address= 0.0.0.0
其添加到 [mysqld]
下。
允许远程访问-设置用户可以远程访问:
允许 root 用户远程访问:
设置 root 用户,为 root 用户赋予了所有数据库的所有权限,允许 root 用户从任何主机(%
表示任何主机)远程访问数据库。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你数据库root用户的密码';
创建自定义管理员用户:
第二个,推荐的方式就是创建一个管理员用户,可以访问所有的数据库:你可以将这个管理员用户命名为任何你想要的名字,但是请确保你使用了一个强大的密码。
下面命令,创建用户
create user 'administrator'@'%' identified by '你数据库administrator用户的密码';
下面命令,修改了一个名为 administrator
的用户的密码和认证方法。mysql_native_password
是一种常见的认证插件。
ALTER USER 'administrator'@'%' IDENTIFIED WITH mysql_native_password BY '你数据库administrator用户的密码';
下面命令,赋予了 administrator
用户从任何主机远程访问所有数据库和表的权限。
GRANT ALL PRIVILEGES ON *.* TO 'administrator'@'%' IDENTIFIED BY '你数据库administrator用户的密码';
重启数据库:
service mysql restart
以 root 身份远程登录
想要在终端命令行和 MariaDB 服务器进行交互,使用 mysql
客户端工具或者 mariadb
。这个工具被作为 MariaDB 服务器软件包的依赖软件被安装。
这个 auth_socket
插件将会通过 Unix socket 文件验证用户来连接 localhost
。这就意味着你不能通过提供密码来验证 root。
想要以 root 用户名登录 MariaDB 服务器,输入:
sudo mysql -u root -p
你将会被展示 MariaDB shell,就像下面一样:
如果使用第三方客户端程序 ,以 root 身份登录 MariaDB 服务器,需要将鉴权方法从 auth_socket
修改为 mysql_native_password
你可以通过运行下面的命令做到:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你数据库的root密码';
FLUSH PRIVILEGES;
常用命令
查看数据库和数据表
mysql\>show database; //列出所有数据库
mysql\>use ‘数据库名’; //切换数据库
mysql\>show tables; //列出所有表
mysql\>describe 表名; //显示数据表结构
更新权限
FLUSH PRIVILEGES;
创建用户
create user '用户名'@'可访问控制' identified by '密码'; 可访问控制参数:localhost , ip ,%
create user 'demo'@'%' identified by '123456';
创建数据库
create database demoDB;
授予数据库权限
授权 demo 用户拥有 demoDB 数据库的所有权限(某个数据库的所有权限):后面的密码是 demo 用户的密码,不是 root 用户的
grant all privileges on demoDB.* to demo@% identified by '123456';
flush privileges;//刷新系统权限表,必须刷新,不然不生效
授予全部权限
grant all privileges on *.* to 'demo'@'%';
刷新系统权限
flush privileges;//刷新系统权限表,必须刷新,不然不生效
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于