环境:飞腾D2000/银河麒麟桌面版V10 SP1 V2403
使用 sudo apt install mariadb-server 安装,安装过程正常,但在执行 mysql_secure_installation初始化之后,在本地使用 mysql -uroot -p ,输入正确密码也会提示 Access Denied,这是第一个大坑。
尝试使用无密码方式启动,修改密码等一系列措施,都没能实现正常登录,只好用 apt remove –purge来卸载,这时候第二个大坑出现了,卸载后重新安装,则无法启动服务。多次尝试,最终使用 apt autoremove 才解决了这个问题,但登录问题仍无法解决。
笔者发文时,kylinos的官方源mariadb版本是10.3,怀疑官方源的版本有问题,于是尝试安装更新版本Mariadb,以下是步骤:
1、从以下地址下载deb包,https://mariadb.com/downloads/,注意,在OS选择中选Debian 10 (ARM64),如果是其它CPU架构做相应选择;
2、在目标机器上将下载到的tar文件解压缩到用户文件夹;
3、打开终端,进入刚才解压缩的文件夹,执行
1 |
sudo ./setup_repository |
此脚本会自动添加本地源到apt
4、执行
1 2 |
sudo apt update sudo apt install mariadb-server |
会自动安装刚才下载版本的mariadb
5、初始化
先使用 sudo systemctl start mariadb 启动
执行 mariadb-secure-installation (10.3以前的版本使用 mysql_secure_installation),按照向导完成设置
注意正确设置root密码,在 Disallow root login remotely? 选N(按理说这部就支持远程登录,其实事实证明没有什么卵用)
6、修改地址绑定
1 |
sudo vim/etc/mysql/mariadb.conf.d/50-server.cnf |
将其中的
bind-address = 127.0.0.1 改为 bind-address = 0.0.0.0
注意,此步骤会引入安全风险,不建议在生产环境使用。
7、添加远程登录用户并授权
先 mysql -uroot -p登录
继续执行如下mysql指令:
1 2 3 4 5 6 7 8 9 10 11 |
use mysql; -- 创建用户 CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码'; --示例1,允许所有从任意地址登录的用户: create user 'user'@'%' identified by 'passwd'; --示例2,允许从192.168.1.100登录的用户: create user 'user'@'192.168.1.100' identified by 'passwd'; -- 授予权限 grant 权限列表 on 数据库名.表名 to '用户名'@'主机名'; -- 可以使用以下命令授予刚创建用户所有数据库所有权限 GRANT ALL ON *.* TO 'user'@'%'; |
8、重启一下服务
1 |
sudo systemctl restart mariadb |
9、开放防火墙端口
1 |
sudo ufw allow 3306/tcp |
或
1 |
iptables -A INPUT -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT |