centos安装数据库
一:mariadb
centos7默认安装的数据库是mariadb,mysql被oracle收购之后开发的一个分支,主要由开源社区在维护,MySQL 有闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB完全兼容mysql,使用方法也是一样的。
二:安装mariadb
分客户端和服务端
yum -y install mariadb,安装客户端
yum -y install mariadb-server,是服务端,按需求来,我是全安了
三:配置mariadb
1.同windows平台一样,设置为开机启动服务
[root@old ~]# systemctl start mariadb #开启服务
[root@old ~]# systemclt enable mariadb # 设置为开机启动
2.查看一下默认的配置
默认直接mysql命令就可以进入数据库
可以看到server charset 和Db characterset:都是latin1,是要修改的。
exit命令退出
3.初始配置
[root@mini ~]# mysql_secure_installation
Enter current password for root (enter for none): # 首次安装后没有密码,直接回车 Set root password? [Y/n] # y New password: # 新密码 Re-enter new password: # 再次输入 Remove anonymous users? [Y/n] # y Disallow root login remotely? [Y/n] # 拒绝root远程登录,n,不管y/n,都会拒绝root远程登录 Remove test database and access to it? [Y/n] # 删除test数据库,y:删除。可以不删选:n Reload privilege tables now? [Y/n] # 重新加载权限表,y。
4.登录测试
此时就不能mysql直接进入,因为上面删除了匿名用户
mysql -uroot -p
四:修改字符编码
修改server端配置
vim /etc/my.cnf.d/server.cnf
在[mysqld]后面添加配置,
mysqld是服务端的启动命令,所以在这后面加
init_connect=‘SET collation_connection = utf8_unicode_ci‘ init_connect=‘SET NAMES utf8‘ character-set-server=utf8 collation-server=utf8_unicode_ci skip-character-set-client-handshake
保存重启mariadb
[root@old my.cnf.d]# systemctl restart mariadb
再次进入,\s查看,修改完成,客户端不用修改,默认就是utf8,且大多数是远程连接,不在本机开client
也可以
MariaDB [(none)]> show variables like "%character%";show variables like "%collation%";
五:远程连接mysql
背景:默认不允许root远程登录,为了安全,超级管理员默认只能在本机登录。
查看3306端口是否开启,因为默认防火墙是开启的,要么关闭防火墙,要么开端口
[root@old my.cnf.d]# firewall-cmd --query-port=3306/tcp no # 没有开启
[root@old my.cnf.d]# firewall-cmd --zone=public --add-port=3306/tcp --permanent # 开启3306端口
success
[root@old my.cnf.d]# firewall-cmd --reload # 重启防火墙
success
[root@old my.cnf.d]# firewall-cmd --query-port=3306/tcp # 查看3306端口是否开启
yes
能不能登录的本质是是否符合授权表,授权表就是一张表,把里面的host改一下
切换user数据库
直接把127.0.0.1改为%,所有的ip都可以登录
update user set host="%" where host="old";
flush privileges; # 刷新权限
重启数据库服务端
systemctl restart mariadb
打开Navicat连接成功
六:如果不想让外网用root用户登录时进行下面配置
创建用户并授权
grant all privileges on *.* to myname@‘%‘ identified by ‘password‘;
例如:grant all privileges on *.* to zhenxiu@‘%‘ identified by ‘123456‘;
第一个*表示任意数据库
第二个*表示任意表,*.*表示所有数据库所有数据表,all privileges开所有的权限
"192.168.1.%" “192.168.%”允许一个网段的ip登录
“%”表示所有的ip都可以