树莓派安装Mariadb及初始化、远程访问设置
一、安装
sudo apt-get install mariadb-server #服务器
sudo apt-get install mariadb-client #客户端,服务器可不安装
二、启动Mariadb
service mariadb start
或者
systemctl start mariadb
设置开机启动
chkconfig mariadb on
或者
systemctl enable mariadb
三、初始化设置
mysql_secure_installation
首先是设置密码,会提示先输入密码
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] <– 是否重新加载权限表,回车
初始化Mariadb完成,接下来测试登录
sudo mysql -uroot -p [回车,之后输入密码]
四、配置字符集
客户端设置
vim /etc/my.cnf.d/mysql-clients.cnf
[mysql]
default-character-set=utf8
服务器端设置
vim /etc/my.cnf.d/server.cnf
[mysqld]
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake
#开启慢查询
slow_query_log = ON
slow_query_log_file = /usr/local/mysql/data/slow.log
long_query_time = 1
全部配置完成,重启mariadb
systemctl restart mariadb
之后进入MariaDB查看字符集
mysql> show variables like "%character%";show variables like "%collation%";
显示为
MariaDB [(none)]> show variables like "%character%";show variables like "%collation%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
五、添加用户并配置权限
创建用户命令
mysql>create user username@localhost identified by 'password';
授予外网登陆权限,但不能二级授权;
mysql>grant all privileges on *.* to username@'%' identified by 'password';
授予权限并且可以二次授权
mysql>grant all privileges on *.* to username@'hostname' identified by 'password' with grant option;
其中只授予部分权限把 其中 all privileges或者all改为:
select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file其中一部分。
刷新权限
flush privileges;
(参考原文链接:Mariadb安装之后的各种设置)
六、设置远程访问权限
select User, host from mysql.user;
查看用户账号信息:
root账户中的host项是localhost表示该账号只能进行本地登录,我们需要修改权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
修改权限。%表示针对所有IP,password表示将用这个密码登录root用户,如果想只让某个IP段的主机连接,可以修改为
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.100.%' IDENTIFIED BY 'my-new-password' WITH GRANT OPTION;
注意:此时远程连接的密码可能与你在本地登录时的密码不同了,主要看你在IDENTIFIED BY后面给了什么密码
具体的请参考GRANT命令
刷新权限
FLUSH PRIVILEGES;
再看看用户信息:
这个时候发现相比之前多了一项,它的host项是%,这个时候说明配置成功了,我们可以用该账号进行远程访问了。
重启远程服务器
service mysql restart
参考原文链接:为 MariaDB 配置远程访问权限
七、修改远程访问配置(重点)
查了很多论坛都是修改/etc/mysql/my.cnf文件,找到bind-address = 127.0.0.1 把 127.0.0.1 改成 0.0.0.0,但在最新的树莓派系统(2021-03-04-raspios-buster-armhf-full)中,/etc/mysql/my.cnf文件没有该代码
最终/etc/mysql/mariadb.conf.d目录下的 50-server.cnf 文件找到了bind-address = 127.0.0.1 并把它改成0.0.0.0
终于解决了远程访问树莓派mysql默认只监听本地ip访问的问题。
(参考原文:raspberry pi(树莓派)上安装和使用MySQL,并通过Navicat远程访问配置脱坑记录)
八、设置大小写敏感
mariadb默认对大小写敏感,修改配置文件可取消大小写敏感
sudo vi /etc/MySQL/my.cnf #参考第七条,修改/etc/mysql/mariadb.conf.d/50-server.cnf 配置文件
在[mysqld]下面添加:
lower_case_table_names = 1
重启mariadb服务即可。(注意,修改一定要在创建数据库之前,对修改之前创建的数据库无效)