前言
最近云服务器到期了,正好前几天购买了最新的树莓派,准备在家里搭建一个小服务器用于编程测试。在配置 MariaDB 的时候发现和之前的方式有些许变化,现在整理成这篇文章。
安装
这里模拟的是在远程服务器配置 MariaDB,如果你是在本地安装可以对下列步骤自行取舍。
具体步骤如下:
第一步 通过 SSH 登录远程服务器,具体步骤可以参考在Mac上通过SSH登录远程服务器。
第二步 通过 apt 或者 yum 的方式安装 MariaDB,这里以 apt 为例(用何种方式安装,取决于你的 Linux 系统和你的使用习惯)
sudo apt-get update // 先对系统进行更新,不更新有时会出现错误
sudo apt-get install mariadb-server // 更新完成后,安装 mariadb-server
配置
执行下列代码进行相关配置
sudo mysql_secure_installation // 注意要使用管理员权限执行
首先提示输入数据库 root 用户密码
- Enter current password for root (enter for none):<–初次运行直接回车
设置密码
- Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
- New password: <– 设置root用户的密码
- Re-enter new password: <– 再输入设置的密码
其它配置
- Remove anonymous users? [Y/n] <– 是否删除匿名用户
- Disallow root login remotely? [Y/n] <–是否禁止root远程登录
- Remove test database and access to it? [Y/n] <– 是否删除test数据库
- Reload privilege tables now? [Y/n] <– 是否重新加载权限表
当然你也可以用下面的方式修改 root 密码:
$ sudo mysql -u root // 直接回车即可,出现下面的文字,即为登录成功
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 10.1.37-MariaDB-0+deb9u1 Raspbian 9.0
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
然后通过如下步骤修改密码
MariaDB [(none)]> use mysql;
MariaDB [mysql]> UPDATE user SET plugin='mysql_native_password' WHERE user='root'; // 身份认证插件
MariaDB [mysql]> UPDATE user SET password=PASSWORD('你的root的密码') WHERE user='root'; // 设置密码
MariaDB [mysql]> flush privileges; // 刷新配置权限
MariaDB [mysql]> exit; // 退出
需要注意的是,上述的 SQL 语句结尾一定要加分号
然后重启服务
systemctl restart mariadb
配置 MariaDB 权限用户
我们可以单独设置一个用户能具有足够 root 的权限执行所有操作,可以进行远程访问。当然你也可以使用 root 用户进行配置,但是不建议使用 root 用户。
注意以下步骤是使用 root 账户登录,并赋予新建用户权限的
// 以 root 账户登录数据库。回车后,输入数据库 root 账户的密码,即我们在上面设置的密码
sudo mysql -u root -p
建立用户并赋予权限
MariaDB [(none)]> CREATE USER 'username'@'host' IDENTIFIED BY 'password';
示例:
CREATE USER 'jimmy'@'%' IDENTIFIED BY '123456';
参数 | 说明 |
---|---|
username | 创建用户的用户名 |
host | 指定该用户在哪个主机上可以登陆,本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符% |
password | 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器 |
GRANT ALL PRIVILEGES ON databasename.tablename TO 'username'@'host' IDENTIFIED BY '123456' WITH GRANT OPTION;
示例:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'jimmy'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
// 也可省略为
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'jimmy'@'%';
参数 | 说明 |
---|---|
privileges | 用户的操作权限,如SELECT , INSERT , UPDATE 等。如果要授予所的权限则使用ALL |
databasename | 数据库名,如果要授予该用户对所有数据库和表的相应操作权限则可用* 表示,如*.* |
tablename | 表名,如果要授予该用户对所有数据库和表的相应操作权限则可用* 表示,如*.* |
然后刷新上述设置
MariaDB [(none)]> flush privileges;
总示例:
$ mysql -u root -p
$ 输入密码
MariaDB [(none)]> CREATE USER 'jimmy'@'%' IDENTIFIED BY '123456';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'jimmy'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
配置远程访问
注意:在旧版本上的是修改
/etc/mysql/my.cnf
文件相关内容的,在新版本上没有这个文件,新版本的服务器需要修改/etc/mysql/mariadb.conf.d/50-server.cnf
这个文件。
$ sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
# 将bind-address这行注释掉
# 或者将127.0.0.1 这个值改为 0.0.0.0
$ systemctl restart mariadb // 重启服务
其他
查看数据库服务器进程是是否运行:
service mariadb status
查看 MariaDB 运行的端口:
// 在数据库登录状态下
MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
1 row in set (0.004 sec)
MariaDB [(none)]>
管理服务
显示一个服务的状态:systemctl status mariadb.service
在开机时启用一个服务:systemctl enable mariadb.service
在开机时禁用一个服务:systemctl disable mariadb.service