背景:做python项目的时候需要使用pycharm连接mysql数据库,在CnetOS7版本中mysql换了个名字叫做mariadb
安装命令
yum -y install mariadb mariadb-server
设置密码、修改密码
mysqladmin -u root password '123'
mysqladmin -uroot -p"123" password "456"
忘记密码
vim /etc/my.cnf #mysql主配置文件
[mysqld]下添加 skip-grant-table
保存退出并重启服务
systemctl restart mariadb
mysql #进入数据库修改密码
MariaDB [(none)]> update mysql.user set password=password("123") where user="root" and host="localhost"; MariaDB [(none)]> flush privileges;
设置开机启动
systemctl enable mariadb
创建数据库和数据库用户并赋权
mysql>create database meiduo default charset=utf8; #创建名为meiduo的库
mysql>create user meiduo identified by 'meiduo'; #创建名为meiduo的用户,密码为meiduo
mysql>grant all on meiduo.* to 'meiduo'@'%'; #将meiduo数据库的所有权限赋予meiduo用户且不限制访问ip
mysql>flush privileges; #刷新MySQL的系统权限相关表
现在可以尝试用pycharm的pymysql模块连接Mysql数据库
问题1:
解决办法:
查看CentOS7系统的防火墙,默认是开启的
使用systemctl stop firewalld命令关闭防火墙
再次在pycharm里尝试连接
问题2:
还是连接不到,错误代码是1130,pymysql.err.InternalError: (1130,'xxxxx' is not allowed to connect to this MariaDB server")
之后发现是权限问题。如下操作mysql库,即可解决。登录mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称'%'。。
mysql -u root -p
mysql>use mysql; #选择mysql库
mysql>update user set host = '%' where user ='root' and host='localhost'; #修改host值(以通配符%的内容增加主机/IP地址)
mysql>flush privileges; #刷新MySQL的系统权限相关表
退出mysql后再次登录需要使用mysql -h xxx.xxx.xxx.xxx -uroot -p才能登录 (xxx.xxx.xxx.xxx为远程mysql服务器的ip地址)