diff --git a/Software/Applications/MariaDB/MariaDB_安装配置与使用.md b/Software/Applications/MariaDB/MariaDB_安装配置与使用.md index 58322cc..707e37f 100644 --- a/Software/Applications/MariaDB/MariaDB_安装配置与使用.md +++ b/Software/Applications/MariaDB/MariaDB_安装配置与使用.md @@ -2,7 +2,7 @@ MariaDB 是与 MySQL 兼容的开源实现,当 Linux 服务器上需要使用 MySQL 时可以用 MariaDB 替代。 -## 安装 +## 1.安装 MariaDB 的安装命令如下: @@ -10,10 +10,10 @@ MariaDB 的安装命令如下: ## Arch Linux pacman -S mariadb mariadb-clients mariadb-libs ## Ubuntu -apt-get install mariadb-server mariadb-client libmariadbclient-dev +apt install mariadb-server mariadb-client libmariadb-dev libmariadbclient-dev ``` -## 初始配置 +## 2.初始配置 安装完 MariaDB 后需要进行初始配置,首先需要执行以下命令: @@ -32,35 +32,136 @@ systemctl start mariadb ```bash mysql_secure_installation - Enter current password for root (enter for none):[password] - Switch to unix_socket authentication [Y/n] n - Change the root password? [Y/n] Y - Remove anonymous users? [Y/n] Y - Disallow root login remotely? [Y/n] n - Remove test database and access to it? [Y/n] Y - Reload privilege tables now? [Y/n] Y - ... Success! +Enter current password for root (enter for none):[password] +Switch to unix_socket authentication [Y/n] n +Change the root password? [Y/n] Y +Remove anonymous users? [Y/n] Y +Disallow root login remotely? [Y/n] n +Remove test database and access to it? [Y/n] Y +Reload privilege tables now? [Y/n] Y +... Success! ``` -## 基本维护 +## 3.基本维护 + +### 3.1.初始配置+常见问题解决 ```bash # 进入 MariaDB 交互模式 mariadb -u root -p -# 显示所有数据库 -show databases; -# 删除数据库 -drop database ; -# 选择操作的数据库 -use mysql; -# 更改密码 +# 本地直接登陆 +mariadb -h localhost -u root -p + +# 更改密码(解决普通用户登陆报错:Access denied for user 'root'@'localhost'),请将'passwd'替换为实际的密码 update user set authentication_string=PASSWORD('passwd') where user='root'; # 如果没这一行可能也会报一个错误,因此需要运行这一行 update user set plugin="mysql_native_password"; -# 强制写入 -flush privileges; + +# 强制写入,操作完退出前先进行以下该操作 +FLUSH privileges; # 退出 quit; # 重启 MariaDB 服务使新的配置生效 systemctl restart mariadb ``` + +### 3.2.配置信息查询 + +```bash +# 查看端口号 +SHOW global variables like 'port'; +``` + +### 3.3.数据库操作 + +```bash +# 显示所有数据库 +SHOW databases; + +# 删除数据库 +drop database 'database name'; + +# 选择操作的数据库 +use mysql; + +# 创建数据库 +CREATE DATABASE 'database name'; +``` + +### 3.4.用户操作 + +```bash +# 查询用户 +SELECT user from mysql.user; + +# 删除用户 +drop user ‘username’@‘host’; + +# 创建用户 +# username - 你将创建的用户名 +# host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用 localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符 % +# password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器 +CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; +# 示例 +CREATE USER 'm23100'@'localhost' IDENTIFIED BY '123456'; +CREATE USER 'm23100'@'192.168.1.101' IDENDIFIED BY '123456'; +CREATE USER 'm23100'@'%' IDENTIFIED BY '123456'; +CREATE USER 'm23100'@'%' IDENTIFIED BY ''; +CREATE USER 'm23100'@'%'; +``` + +### 3.5.用户权限管理 + +主要是管理用户对数据库的操作权限。 + +```bash +# 授权用户使用数据库 +# privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等.如果要授予所的权限则使用ALL +# databasename - 数据库名 +# tablename-表名 +# 如果要授予该用户对所有数据库和表的相应操作权限则可用 * 表示, 如 *.* +GRANT privileges ON databasename.tablename TO 'username'@'host' +# 示例 +GRANT ALL ON test.* to username @ 'localhost' IDENTIFIED BY 'password'; + +# 撤销用户权限 +REVOKE privilege ON databasename.tablename FROM 'username'@'host'; +``` + +## 4.异常处理 + +```bash +# 停止服务 +sudo systemctl stop mariadb +# 进入安全模式,并设置为后台进程 +sudo mysqld_safe --skip-grant-tables & +# 登陆mysql +$ mysql -u root +``` + +```bash +# 查询用户 +SELECT Host,User,plugin from mysql.user where User='root'; +# 重置加密模式 +update mysql.user set plugin='mysql_native_password'; +# 重置密码 +update mysql.user set password=PASSWORD("newpassword") where User='root'; +# 刷新权限信息 +flush privileges; +exit +``` + +```bash +# 杀掉进程 +kill -9 $(pgrep mysql) +# 重新启动服务 +service mariadb start +# 登陆 mysql +mariadb -u root -p +``` + +## 5.彻底卸载 + +```bash +apt purge mysql-* mariadb-server mariadb-client libmariadb-dev libmariadbclient-dev +```