腾讯云系列三:Centos7 安装 mysql数据库 远程连接 字符集设置
关键字加红:难看死了Oracle oracle Linux linux 数据库 java Java mysql Mysql 测试 —— edit by 陈宇超
安装环境:腾讯云主机 centos7,1核1G内存,1M带宽,系统盘linux50G
引言
CentOS 7 版本将MySQL数据库软件从默认的程序列表中移除,用mariadb代替了,所以 yum 安装还得多走一步
第一步 : 手动下载yum源并安装yum源
官网是信息获取的最重要渠道!从官网下载yum源,使用wget工具
将官网生成的下载链接粘到wget命令后
[[email protected]_39_77_centos cyc]# wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
安装仓库
[[email protected]_39_77_centos cyc]# rpm -ivh mysql57-community-release-el7-11.noarch.rpm
第二步 : 安装mysql数据库
安装mysql数据库(这会默认安装最新版5.7,如果你不介意!笔者安装的是5.6,5.7安装包会大很多),至此数据库就安装完成了
[[email protected]_39_77_centos ~]# yum install mysql-community-server
以下部分属于补充知识点 : 自定义安装你想要的mysql数据库版本
在MySQL Yum存储库(http://repo.mysql.com/yum/)中,MySQL社区服务器的不同版本系列托管在不同的子仓库中。默认情况下,最新的GA系列(目前为MySQL 5.7)的子仓库已启用(enabled),默认情况下禁用所有其他系列(例如,MySQL 5.6系列)的子仓库(disabled)。
使用 yum repolist all | grep mysql
可以查看MySQL Yum存储库中的所有子仓库
要安装最新的GA系列的最新版本,不需要配置。要安装最新的GA系列以外的特定系列的最新版本,请禁用当前最新GA系列子仓库,并在运行安装命令之前启用特定系列的子仓库。centos7 平台支持 yum-config-manager命令,可以发出以下命令,该命令禁用5.7系列的子仓库,并启用5.6系列的子仓库
[[email protected]_39_77_centos ~]# yum-config-manager –disable mysql57-community
[[email protected]_39_77_centos ~]# yum-config-manager –enable mysql56-community
在任何时间只能启用一个版本系列的子链接。当启用了多个版本系列的子仓库时,Yum将使用最新的系列。查看已经启用的子仓库可以使用以下命令
[[email protected]_39_77_centos ~]# yum repolist enabled | grep mysql
第三步 : 启动 mysql 服务
刚刚完成mysql的安装,mysql默认是没有启动的,可使用以下命令查看
[[email protected]_39_77_centos ~]# systemctl status mysqld.service
● mysqld.service - MySQL Community Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: inactive (dead)
启动mysql,速度有可能会有一些慢,请要耐心等待。
[[email protected]_39_77_centos ~]# systemctl start mysqld.service
注意: mysql在安装完成之后,默认情况下,MySQL将绑定到localhost(127.0.0.1)。允许在公共IP上不受限制地访问MySQL是不推荐的,一般来说我们会去修改/etc/my.cnf配置文件中的bind-address参数来更改其监听的地址。如果您决定将MySQL绑定到您的公共IP,您应该实现只允许来自特定IP地址的连接的防火墙规则。至于如何远程连接,后面会讲到。
第四步 : 增强 mysql 。注意这一步只有mysql 5.6需要,mysql 5.7在yum安装时已经默认安装该安全增强。
程序mysql_secure_installation 允许您执行重要操作,如设置root密码,删除匿名用户等。始终运行它以确保您的MySQL 5.6安装:
[[email protected]_39_77_centos ~]# mysql_secure_installation
对于以下选项,都建议回答yes
第五步 :在服务器使用 mysql
[[email protected]_39_77_centos ~]# mysql
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)
[[email protected]_39_77_centos ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 20
Server version: 5.6.37 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql>
第六步 : 远程连接 mysql
在这之前有必要了解以下mysql的账户登录权限相关的知识
1.mysql服务器中用户的信息保存在数据库名为mysql的数据库中的user表中,输入以下命令查看用户的登录权限,通过上面的设置我们可以看到root管理员账号只被允许从本机登录
mysql> SELECT DISTINCT CONCAT(‘User: ”’,user,”’@”’,host,”’;’) AS query FROM mysql.user;
+—————————+
| query |
+—————————+
| User: ‘root’@’127.0.0.1’; |
| User: ‘root’@’::1’; |
| User: ‘root’@’localhost’; |
+—————————+
3 rows in set (0.00 sec)
2.创建远程连接用户 chenyuchao
密码 cool
让它可以从任何主机*问数据库 dbchen
,并且拥有该数据库的所有操作权限
[[email protected]_39_77_centos ~]# mysql -uroot -p //显然只有管理员才有资格创建用户,所以我们用root账号在服务器上登录mysql
Enter password:
mysql> create database dbchen;
. . .
mysql> create user ‘chenyuchao’@’%’ identified by ‘cool’;
. . .
mysql> grant all on dbchen.* to ‘chenyuchao’ identified by ‘cool’;
作如下简要说明:
create user ‘xxx’ @ ’%’ identified by ‘xxx’; xxx分别表示用户名和密码,这里的 % 百分号表示任意IP主机
create user ‘xxx’ @ ’139.199.201.55’ identified by ‘xxx’; %百分号可以用具体的IP地址代替,那么该用户就只能从该指定的ip主机上连接mysql服务器
create user ‘xxx’ @ ’localhost’ identified by ‘xxx’; 标记为localhost那么就只能从服务器*问mysql数据库,禁止远程连接
grant all 表示授予所有权限,但是不建议授予所有权限。对于普通用户,建议使用GRANT SELECT,INSERT,UPDATE,DELETE。
on dbchen.* 表示授予的范围为dbchen数据库的所有表。当然你也可以指定某个特定的表,例如仅指定student表 on dbchen.student
mysql> flush privileges; //刷新一下是有必要的
对于用户的增删改以及权限控制,实际上都是操作mysql.user这张表,按正常的来就可以了
3.使用DataGrip IDE去远程访问mysql数据库,测试成功
第六步 :修改数据库的编码
数据库的默认编码并不是utf8,这会导致向表中插入中文时会出现下面的错误提示
使用 show variables like ‘char%’;命令查看一下数据库编码
修改 /etc/my.cnf配置文件,不过在修改之前最好备份一下该配置文件
小提示 :一旦你的 my.cnf 配置文件配置出错,当你执行 systemctl start mysqld.service 命令时,就会出现一直等待,然后你就会ctrl+c强制结束进程,然后你就会执行systemctl status mysqld.service 看看服务启动了没,完事了你还发现服务已经处于**状态,当mysql -uroot -p 登录时就会抛出错误ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2),这都是因为配置文件有错误,所以备份很重要!
向配置文件中[mysqld]栏目下添加如下内容即可,这个字符设置应用于服务器范围,并应用于任何应用程序创建的数据库的默认值,以及在这些数据库中创建的表。
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
这一块可能比较容易出问题导致服务器不能正常启动,出错很可能是中心横线被写成下划线,有点坑啊,所以截个图看看
配置完重新启动服务器
[[email protected]_39_77_centos ~]# systemctl restart mysqld.service
再次验证一下,都变成utf-8了,我很满意!哈哈哈哈
顺便小提一下如何查看数据库和表的编码
show create database 数据库名;
dbchen这个数据库是我在修改全局数据库编码为utf8之前创建的,所以目前为止它的编码还是latin1
show create table 表名;
stu这张表的编码自然也是latin1
既然走到这一步,把这个数据库的编码也改过来吧
改变数据库的编码为utf-8;mysql> alter database dbchen character set utf8;
改变表的编码为utf-8;mysql> alter table dbchen.stu character set utf8;接下来在dbchen数据库中新建的表也会是utf-8的编码了,还有就是虽然表stu编码格式改成了utf8,但是该表里面原先的字段的编码仍是latin1,插入中文还是会出错。
附加 : 修改mysql的root用户密码
见参见【1】的链接,里面有讲到
参见[1]: https://www.linode.com/docs/databases/mysql/how-to-install-mysql-on-centos-7
参见[2]:https://support.rackspace.com/how-to/mysql-connect-to-your-database-remotely/
参见[3]:https://*.com/questions/14779104/how-to-allow-remote-connection-to-mysql
参见[4]:https://easyengine.io/tutorials/mysql/remote-access/
参见[5]:http://blog.****.net/whatlookingfor/article/details/52382472