昨晚,我是在linux安装的mariadb。期间遇到了N个问题,现把我遇到问题的各种解决方法发出来,供大家避坑。
首先,安装的时候,要同时安装客户端和服务端
yum -y install mariadb mariadb-server
必须要安装两个,一个是客户端,一个是服务端。
然后我们等待即可
安装完成,首先我们启动Mariadb
[root@VM-16-5-centos ~]# systemctl start mariadb
然后配置密码并消除隐患
[root@VM-16-5-centos ~]# mysql_secure_installation
这个我们刚装好,没有密码,按回车就好
这个为root用户设置密码,按y确认,设置成你自己的即可
移除访客用户,为了安全起见,这个选y
是否禁止root用户远程登陆?看自己的选择,我这里需要远程登陆,选择的否
是否删除测试数据库,这个选是
立即重读特权表,这个选是
这个数据库服务端算是装好了。
下面开始链接数据库,首先开启他的远程链接
首先,在服务器上链接mariadb
然后输入命令,use mysql;
select User,authentication_string,Host from user;
通过命令可以看到当前只有一个用户root,并且Host为localhost,即只能本地访问权限。
开启远程访问权限
一般有两种,改表法,还有种授权法
方法1:改表法
update user set host='%' where user='root';
这个我试过,可能玄学问题,我没有成功
方法2:授权
赋予任何主机访问权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
我用的这个,是测试成功的
你也可以讲root@%改成用户名@ip,只允许指定ip访问
这里有个坑,不要把你的这个授权密码改成和数据库密码一样的,不然会一直报错1045拒绝登录
提示成功,然后刷新权限表
FLUSH PRIVILEGES;
然后再次查看user表
select User,authentication_string,Host from user;
然后建议重启mariadb
这里如果你是云服务器,建议不要马上去链接,你还需要关闭防火墙,selinux,在云服务器控制台开启3306端口
最好是重启下服务器
然后再开启mariadb
然后就连接成功了
下面用pymysql这个模块进行链接
import pymysql
db=pymysql.connect(host='你的数据库ip',user='root',passwd='刚才你设置的登录密码,不是数据库密码',database='你的数据库',charset='utf8',port=3306)
cur=db.cursor()
cur.execute('insert into dytt_tab values(%s,%s)',['内容'])
db.commit()
cur.close()
db.close()
然后就可以了