前言 由于数据库一直用的是 阿里云的 RDS,公司的网访问阿里云又是龟速,所以用了一会还是决定在本地搭建一台 mysql 服务器。 mysql 被 oracle 收购之后,下载 mysql 就需要
前言
由于数据库一直用的是 阿里云的 RDS,公司的网访问阿里云又是龟速,所以用了一会还是决定在本地搭建一台 mysql 服务器。
mysql 被 oracle 收购之后,下载 mysql 就需要 oracle 账号了,社区版变成了两种 mysql-community-server 和 mariadb,mariadb 据说是 mysql 社区为了防止 oracle 不再开源 mysql 而建的一个分支,完全兼容 mysql。
yum 上面一般都是这个 mariadb,mysql-community-server 则需要从 mysql 的官网下载。
安装 mariadb
yum install mariadb-server mariadb
vim /etc/my.cof
添加默认编码:
[mysql]
default-character-set = utf8
启动 mariadb:
systemctl restart mariadb
rpm 安装 mysql-community
官网下载 mysql-community-server 的 rpm,默认 yum 源是没有 mysql 社区版的,需要手动添加:
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-server
添加默认编码:
vim /etc/my.cof
[mysql]
default-character-set = utf8
启动 mariadb:
systemctl restart mysqld
初始化
刚安装的 mysql 提供了一个无密码的 root 用户,需要设置密码:
mysqladmin -u root password "123456";
创建数据库:
mysqladmin -u root -p create test_database;
这样创建了一个 test_database 的数据库;
添加用户:
mysql -u root -p
root 用户连接数据库,切换到 mysql 数据库:
mysql> use mysql;
然后将新建的用户插入到 user 表中即可:
insert into user (host, user, password) values ('test1', 'guest', PASSWORD('111111'));
这里注意密码需要用自带的 PASSWORD() 函数加密,这样在数据库中显示的就为密文。
user 表中还有许多其他列,是关于用户权限的,可自行 update;
这样一个简单默认配置的 mysql 数据库就搭建好了,优化才是重点,也是发挥数据库这个强大性能怪兽的钥匙,一个好的数据库架构完全可以接起一个系统很大一部分的业务逻辑,而且处理速度飞快。
数据库给我的感觉就是放在硬盘中的内存,堆栈思想很多,数据交给 mysql,缓存交给 redis,你的系统就不会慢。
Mysql 权限控制-允许用户远程登录
Mysql 为了安全性,在默认情况下用户只能允许本地登录,远程登录需要添加权限,redis 曾经就出现过因为免密码远程登录获取 root 权限的漏洞。
[root@master ~]# mysql -u root -pEnter password:Welcome to the MariaDB monitor. Commands end with ; or /g.Your MariaDB connection id is 9Server version: 5.5.52-MariaDB MariaDB ServerCopyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '/h' for help. Type '/c' to clear the current input statement.MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '111111' WITH GRANT OPTION; # ALL PRIVILEGES 为全部权限(SELECT、INSERT、UPDATE、DELETE) *.* 匹配所有库,'root'@'%' root 对应公网,只允许特定 IP 可 'root'@'192.168.1.1' MariaDB [(none)]> FLUSH PRIVILEGES; # 重载授权表;
删除用户授权,需要使用REVOKE命令,具体命令格式为: REVOKE privileges ON 数据库[.表名] FROM user-name; 具体实例,先在本机登录mysql: mysql -u root -p"youpassword" 进行授权操作: GRANT select,insert,update,delete ON TEST-DB TO test-user@"172.16.16.152" IDENTIFIED BY "youpassword"; 再进行删除授权操作: REVOKE all on TEST-DB from test-user; ****注:该操作只是清除了用户对于TEST-DB的相关授权权限,但是这个“test-user”这个用户还是存在。 最后从用户表内清除用户: DELETE FROM user WHERE user="test-user"; 重载授权表: FLUSH PRIVILEGES; 退出mysql数据库: exit
MYSQL权限详细分类: 全局管理权限: FILE: 在MySQL服务器上读写文件。 PROCESS: 显示或杀死属于其它用户的服务线程。 RELOAD: 重载访问控制表,刷新日志等。 SHUTDOWN: 关闭MySQL服务。 数据库/数据表/数据列权限: ALTER: 修改已存在的数据表(例如增加/删除列)和索引。 CREATE: 建立新的数据库或数据表。 DELETE: 删除表的记录。 DROP: 删除数据表或数据库。 INDEX: 建立或删除索引。 INSERT: 增加表的记录。 SELECT: 显示/搜索表的记录。 UPDATE: 修改表中已存在的记录。 特别的权限: ALL: 允许做任何事(和root一样)。 USAGE: 只允许登录--其它什么也不允许做。