您的位置:首页 > 运维架构 > Linux

腾讯云系列三:Centos7 安装 mysql数据库 远程连接 字符集设置

2017-08-20 20:05 477 查看
关键字加红:难看死了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命令后

[root@VM_39_77_centos cyc]# wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm

安装仓库

[root@VM_39_77_centos cyc]# rpm -ivh mysql57-community-release-el7-11.noarch.rpm

第二步 : 安装mysql数据库

安装mysql数据库(这会默认安装最新版5.7,如果你不介意!笔者安装的是5.6,5.7安装包会大很多),至此数据库就安装完成了

[root@VM_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系列的子仓库

[root@VM_39_77_centos ~]# yum-config-manager –disable mysql57-community

[root@VM_39_77_centos ~]# yum-config-manager –enable mysql56-community

  在任何时间只能启用一个版本系列的子链接。当启用了多个版本系列的子仓库时,Yum将使用最新的系列。查看已经启用的子仓库可以使用以下命令

[root@VM_39_77_centos ~]# yum repolist enabled | grep mysql

第三步 : 启动 mysql 服务

刚刚完成mysql的安装,mysql默认是没有启动的,可使用以下命令查看

[root@VM_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,速度有可能会有一些慢,请要耐心等待。

[root@VM_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安装:

[root@VM_39_77_centos ~]# mysql_secure_installation

对于以下选项,都建议回答yes



第五步 :在服务器使用 mysql

[root@VM_39_77_centos ~]# mysql

ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)

[root@VM_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
,并且拥有该数据库的所有操作权限

[root@VM_39_77_centos ~]# mysql -uroot -p //显然只有管理员才有资格创建用户,所以我们
4000
用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

这一块可能比较容易出问题导致服务器不能正常启动,出错很可能是中心横线被写成下划线,有点坑啊,所以截个图看看



配置完重新启动服务器

[root@VM_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://stackoverflow.com/questions/14779104/how-to-allow-remote-connection-to-mysql

参见[4]:https://easyengine.io/tutorials/mysql/remote-access/

参见[5]:http://blog.csdn.net/whatlookingfor/article/details/52382472
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 centos mysql