• 主页
  • 系列总集
  • OpenCV
  • CMake
  • iOS
  • Java
  • 前端
所有文章 关于我

  • 主页
  • 系列总集
  • OpenCV
  • CMake
  • iOS
  • Java
  • 前端

MySQL简单的安全性设置

2016-07-24

MySQL简单的安全性设置

对MySQL安全设置不太了解的同学,可以使用bin目录下的 mysql_secure_installation 命令进行简单的安全设置

1
2
3
[root@localhost mysql]# bin/mysql_secure_installation -uroot -p
Enter password:

会有一些密码强度等问题设置,需要一定的英语基础

  1. Would you like to setup VALIDATE PASSWORD plugin?
  2. Using existing password for root.
  3. Remove anonymous users?
  4. Disallow root login remotely?
  5. Remove test database and access to it?
  6. Reload privilege tables now?

分别是

  1. 是否启用VALIDATE PASSWORD 验证密码插件
  2. 是否使用现在的密码
  3. 是否移除匿名的用户
  4. 是否不允许root用户远程登录
  5. 是否移除测试用的数据库
  6. 是否现在重新刷新权限
  • Server
  • DataBase
  • MySQL
  • Tips

展开全文 >>

MySQL关闭自动提交

2016-07-24

关闭自动提交

需要修改my.cnf的配置文件,然后重启

1
2
3
[mysqld]
autocommit = 0

关闭自动提交的作用

在MySQL的默认配置下,是会进行自动提交的,有些情况下不方便我们对事务细节对控制

关闭自动提交后注意点

在关闭了自动提交后,mysql会对每一个命令都进行事务处理,所以命令行状态下insert,update,select,delete操作都需要 在最后进行commit指令才算生效

如果以rollback结尾,那么就会回到上一个保存点。

  • Server
  • DataBase
  • MySQL
  • Tips

展开全文 >>

MySQL和命令行一样的自动补全

2016-07-24

开启自动补全

需要修改my.cnf的配置文件,然后重启

但是注意是在mysql命令下,不是mysqld这个命名下配置,就可以使用双Tab进行补全查询

1
2
3
[mysql]
auto-rehash

  • Server
  • DataBase
  • MySQL
  • Tips

展开全文 >>

MySQL查看错误日志

2016-07-24

MySQL查看错误日志

配置错误日志路径

可以通过mysql的配置文件字段 log_error 来配置错误日志的路径,然后使用cat或者vim指令查看

1
2
[mysqld]
log_error = /usr/local/mysql/data/error.log

Mac下的坑

由于Mac的DMG版本的MySQL用户即使使用了sudo也无法获得mysql根目录下的data目录的权限,甚至无法cd进去,所以这里需要将错误日志配置到有权限的位置才能查看,比如

1
/usr/local/mysql/error.log
  • Server
  • DataBase
  • MySQL
  • Tips
  • Tips

展开全文 >>

MySQL更改端口

2016-07-24

更改MySQL端口

我们有个同事的3306端口被自己的瞎搞占用了,要求修改MySQL端口,需要修改my.cnf的配置文件,然后重启

1
2
3
[mysqld]
port = 3306

  • Server
  • DataBase
  • MySQL
  • Tips

展开全文 >>

MySQL中文乱码的问题

2016-07-24

MySQL中文乱码的问题

MySQL的中文乱码是因为字符集引起的,所以使用utf8字符集就好了。

顺便记得输入也是utf8也行,输入包括Java文件的编码格式和Web网页的编码格式参考这里

如何设置utf8

[修改my.cnf的配置文件][]

1
2
3
[mysqld]
character_set_server=utf8mb4

网上还有一个指令 default-character-set 已经在5.7中被上文指令取代而弃用,如果使用这个字段将无法启动MySQL服务

  • Server
  • DataBase
  • MySQL
  • Tips

展开全文 >>

MySQL配置文件讲解和调优

2016-07-24

MySQL的配置文件

MySQL的配置目录不管是Mac还是Linux,不管是那种方式安装,都是处于

1
/etc/my.cnf

位置,可以使用Vim进行编辑

MySQL目录配置原理

MySQL的bin文件下有许多脚本,以三个为例

  1. mysql
  2. mysql.server
  3. mysqld

这些脚本中保存的都是函数,而且他们之间存在互相调用关系,最终调用的都是mysqld

在配置文件中以 “[]” 作为配置的分类,可以针对通过不同脚本函数的调用进行配置,由于最终都是调用mysqld,所以说[mysqld]以下的配置为通用配置

1
2
3
4
5
6
[musql] <===这里是通过命令行mysql登录时的配置
....

[mysqld] <===这里是通用配置
....

调优文件使用的注意点

该调优文件并不是拷贝进my.cnf就可以使用,对数据库配置有了解的人可以自行修改,不了解的主要注意以下问题。

正确的目录位置

该文件中最重要的是要指定好几个目录,并且事先手动建立好,mysql部分功能不会自动建立目录:

  1. datadir: 初始化时指定的data目录,用于存放4个默认表
  2. tmpdir: 临时文件目录,手动建立
  3. log_error: 错误日志目录 这个十分重要
  4. slow_query_log_file: 日志之二
  5. relay_log; 日志之三
  6. innodb_log_group_home_dir: innodb目录,手动建立
  7. innodb_undo_directory: innodb目录,手动建立
  8. plugin_dir: mysql插件位置

其中三个要手动建立的目录如果不存在,会报以下错误,因为Innodb不会自己新建目录

1
2
2016-07-20T02:13:07.227585-08:00 0 [ERROR] InnoDB: If you are installing InnoDB, remember that you must create directories yourself, InnoDB does not create them.

正确的目录权限

除了让以上的目录正确设定外,还需要检查他们是不是拥有,特别是针对三个手动建立的目录

1
2
3
4

chown -R mysql.mysql temp undolog redolog
chgrp -R mysql temp undolog redolog

skip_name_resolve

skip_name_resolve: 禁止域名解析

这个也就是说只能使用ip进行链接,我在Mac的DMG版本MySQL-5.7.13下有一次不知为何在使用了这个选项后,无法链接到服务器,但是后来又好了,无法复现的错误

innodb_undo_tablespaces

在优化的的配置文件里

1
2
innodb_undo_tablespaces = 3

在我个人的环境里会造成无法启动服务器,原因是 innodb_undo_tablespaces这个属性必须在初始化时配置,一旦配置无法后期更改,默认是0

所以我把其注销掉了,因为我的初始化命令并没有指定这个参数

一份网上的调优配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
[client]
user=root
password=root

[mysqld]
########basic settings########
server-id = 11
port = 3306
user = mysql
autocommit = 0
character_set_server=utf8mb4
#skip_name_resolve = 1
bind_address = 127.0.0.1
max_connections = 800
max_connect_errors = 1000
transaction_isolation = READ-COMMITTED
explicit_defaults_for_timestamp = 1
join_buffer_size = 134217728
tmp_table_size = 67108864
datadir = /usr/local/mysql/data
tmpdir = /usr/local/mysql/temp
max_allowed_packet = 16777216
sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
interactive_timeout = 1800
wait_timeout = 1800
read_buffer_size = 16777216
read_rnd_buffer_size = 33554432
sort_buffer_size = 33554432
########log settings########
log_error = /usr/local/mysql/data/error.log
slow_query_log = 1
slow_query_log_file = /usr/local/mysql/data/slow.log
log_queries_not_using_indexes = 1
log_slow_admin_statements = 1
log_slow_slave_statements = 1
log_throttle_queries_not_using_indexes = 10
expire_logs_days = 90
long_query_time = 2
min_examined_row_limit = 100
########replication settings########
master_info_repository = TABLE
relay_log_info_repository = TABLE
log_bin = bin.log
sync_binlog = 1
gtid_mode = on
enforce_gtid_consistency = 1
log_slave_updates
binlog_format = row
relay_log = /usr/local/mysql/data/relay.log
relay_log_recovery = 1
binlog_gtid_simple_recovery = 1
slave_skip_errors = ddl_exist_errors
########innodb settings########
innodb_page_size = 16384
innodb_buffer_pool_size = 6G
innodb_buffer_pool_instances = 8
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_lru_scan_depth = 2000
innodb_lock_wait_timeout = 5
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_flush_method = O_DIRECT
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_log_group_home_dir = /usr/local/mysql/redolog/
innodb_undo_directory = /usr/local/mysql/undolog/
innodb_undo_logs = 128
#innodb_undo_tablespaces = 3
innodb_flush_neighbors = 1
innodb_log_file_size = 4G
innodb_log_buffer_size = 16777216
innodb_purge_threads = 4
innodb_large_prefix = 1
innodb_thread_concurrency = 64
innodb_print_all_deadlocks = 1
innodb_strict_mode = 1
innodb_sort_buffer_size = 67108864
########semi sync replication settings########
plugin_dir=/usr/local/mysql/lib/plugin
plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
loose_rpl_semi_sync_master_enabled = 1
loose_rpl_semi_sync_slave_enabled = 1
loose_rpl_semi_sync_master_timeout = 5000

[mysqld-5.7]
innodb_buffer_pool_dump_pct = 40
innodb_page_cleaners = 4
innodb_undo_log_truncate = 1
innodb_max_undo_log_size = 2G
innodb_purge_rseg_truncate_frequency = 128
binlog_gtid_simple_recovery=1
log_timestamps=system
transaction_write_set_extraction=MURMUR32
show_compatibility_56=on

  • Server
  • DataBase
  • MySQL
  • Tips

展开全文 >>

Hello Server(四):以MySQL初始化为主的一些坑坑坑坑

2016-07-20

MySQL的各种大坑

在服务器的安装中,最容易出现的问题的就是数据库安装问题,一旦哪一步出现Error对于不了解数据库的人来讲,修复的成本是极其高的。本篇将把三个月里关于MySQL碰到的各种坑一一总结

数据库初始化完成了什么

mysql初始化主要完成了四个数据库的创建和数据写入

1
2
3
4
5
| information_schema |
| mysql |
| performance_schema |
| sys |

其中对于操作者来说最重要的是mysql,里面存储着账号密码和权限等信息

5.7弃用的初始化命令

在MySQL的5.7版本更换了初始化函数,使用旧版的初始化函数最关键的一个问题是 无法直接得到默认密码 以下是旧版初始化的提示信息

1
2
3
4
5
6
7
[root@localhost mysql-5.7.13]# bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql-5.7.13/ --datadir=/usr/local/mysql-5.7.13/data
2016-07-22 06:41:58 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2016-07-22 06:42:01 [WARNING] The bootstrap log isn't empty:
2016-07-22 06:42:01 [WARNING] 2016-07-22T13:41:58.037800Z 0 [Warning] --bootstrap is deprecated. Please consider using --initialize instead
2016-07-22T13:41:58.038451Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000)
2016-07-22T13:41:58.038478Z 0 [Warning] Changed limits: table_open_cache: 431 (requested 2000)

默认密码在哪

如果使用了旧版的初始化命令,可以去目录

1
cat /root/.mysql_secret

下获得初始化密码

接入数据库的坑

如果按照教程(一)至(三)正确的配置,应该不会出现问题,但是在我自己摸索的过程中,因为使用旧版初始化命令,还遇到了以下问题,但是部分无法复现

  1. Table权限不足
  2. user中host仅对localhost开放
  3. 防火墙没有开放端口:解决方案
  4. Jetty服务器无法正常使用图像验证码:解决方案

Table权限不足

由于我使用不同版本的命令进行了多次初始化,不知道最后怎么搞得默认的库都不具备正确的权限,使用了以下指令解决

1
2
3
grant all privileges on *.* to root@localhost identified by 'root';
flush privileges;
//MySQL> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;

user中host被改错

由于我乱改默认数据库mysql中的user表哥,导致对应root账号的host错误,始终无法接入数据库

1
2
3
use mysql;
UPDATE user SET host='localhost' WHERE user.user='root';//这是恢复正确初始化后的默认值
flush privileges;

如果想从本机(虚拟机Linux)以外的地址(实体机Mac上的数据库软件)接入数据库,也需要更改这里的host对应

1
UPDATE user SET host='%' WHERE user.user='root';//允许任意值

不然仅能虚拟机自身的链接访问接入数据库

接入数据库的正确姿势

通过以上错误总结,完成正确的数据库链接,需要注意以下条件的齐备

  1. MySQL数据库正常运行
  2. 使用了正确的地址和账户密码
  3. 防火墙没有拦截请求
  4. 名为mysql的DATABASE中user表单host与user字段正确
  5. 登陆用户拥有正确的数据库权限

如果数据库因为各种问题出现了异常,一定要逐条检查以上五点

  • Java
  • Net
  • Servlet
  • Server
  • DataBase
  • MySQL
  • Linux
  • Tutorial

展开全文 >>

Hello Server(三):服务器容器Jetty和开放防火墙

2016-07-20

服务器容器Jetty

数据库安装完毕后我们需要安装一个服务器容器以便于架设服务

服务器容器相关知识参考

下载

同MySQL一样,Jetty可以使用wget下载,我采用的是8.1.19版本

1
2
3

wget -O /usr/local/jetty-8.1.19.tar.gz http://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/8.1.19.v20160209/jetty-distribution-8.1.19.v20160209.tar.gz

解压缩和建立软连接

1
2
3
4
[root@localhost local]# tar -xvf jetty-8.1.19.tar.gz
[root@localhost local]# mv jetty-distribution-8.1.19.v20160209 jetty-8.1.19
[root@localhost local]# ln -s jetty-8.1.19 jetty

建立work目录和启动

由于Jetty本身是隐式的work目录参考这里

1
2
3
4
[root@localhost local]# cd jetty-8.1.19
[root@localhost jetty-8.1.19]# mkdir work
[root@localhost jetty-8.1.19]# java -jar start.jar

至此一切顺利的话,应该是启动成功,但是在折腾的过程中往往是不顺利的,遇到的一些坑将在[下章总结][]

防火墙开放端口

服务器启动后在服务器内访问地址 127.0.0.1:8080 可以看到Jetty页面,但是在实体机器内通过服务器地址 192.168.133.130:8080 访问却提示无法打开页面,原因是由于 Linux服务器的防火墙默认并没有开放8080端口

Linux防火墙是什么

Linux防火墙是一个叫做iptables的服务,其配置文件在 /etc/sysconfig/iptables 中

打开iptables

1
2
[root@localhost jetty]# vim /etc/sysconfig/iptables

默认文本为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

开放8080和3306端口

一般情况下各个端口的作用为

  1. 22: ssh端口
  2. 8080: web服务端口
  3. 3306: mysql端口

从默认文本中可以看出,22端口已经被默认允许进入,我们只需要照着写就可以

1
2
3
4
5
6
7
8
9
10
# Firewall configuration written by system-config-firewall
....

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
....

COMMIT

保存退出后重启防火墙服务,新的配置文件才能生效

1
2
3
4
5
6
7
//这个是关闭防火墙指令
[root@localhost jetty]# service iptables stop
//这个是启动指令
[root@localhost jetty]# service iptables start
//这个是重启
[root@localhost jetty]# service iptables restart

使用重启可以看到提示信息

1
2
3
4
5
6
[root@localhost jetty]# service iptables restart
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]

iptables在讲什么

iptables的前身叫ipfirewall (内核1.x时代),这是一个作者从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具。任何流量在进入网卡之后需要经过5个链(或者叫关卡),这五个链也被称为五个钩子函数(hook functions)。

  1. PREROUTING (路由前)
  2. INPUT (数据包流入口)
  3. FORWARD (转发管卡)
  4. OUTPUT(数据包出口)
  5. POSTROUTING(路由后)

任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@www ~]# iptables-save
# Generated by iptables-save v1.4.7 on Fri Jul 22 15:51:52 2011
*filter <==星号开头的指的是表格,这里为 filter
:INPUT ACCEPT [0:0] <==冒号开头的指的是链,这里使用了3个链INPUT FORWARD OUTPUT
:FORWARD ACCEPT [0:0] <==三条内建链的政策都是 ACCEPT
:OUTPUT ACCEPT [680:100461]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT <==针对 INPUT 的规则
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT <==这条很重要!针对本机内部接口开放!
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT <==针对 22端口的 INPUT 的规则
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited <==针对 FORWARD 的规则
COMMIT
# Completed on Fri Jul 22 15:51:52 2011

参考文献

  1. iptables详解
  • Java
  • Net
  • Servlet
  • Server
  • DataBase
  • MySQL
  • Linux
  • Tutorial

展开全文 >>

Hello Server(二):数据库MySQL

2016-07-19

数据库MySQL

数据库是最头疼的东西,折腾3次其中两次都是为了折腾它,主要是要注意两点

  1. 采用正确的初始化命令
  2. 配置正确的访问防火墙和授权策略

MySQL安装

下载

我是用的是5.7.13版本的MySQL,有两种安装方式,第一是用wget从网上下载

1
2
3

wget -O /usr/local/mysql-5.7.13.tar.gz http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.13-linux-glibc2.5-x86_64.tar.gz

但是这个国外的地址实在是下载着太慢了,所以我就用迅雷下好然后移动到了Linux里

解压缩

解压缩到 /usr/local 下,注意不同的命令可能造成目录结果层级不同,总之保证 /usr/local/mysql-5.7.13/bin 这种结构即可

1
2
3
4
5
6
7
//1. 切换目录
[root@localhost local]# cd /usr/local
//2. 解压缩
[root@localhost local]# tar -xvf mysql-5.7.13.tar.gz
//3. 更改mysql目录名
[root@localhost local]# mv mysql-5.7.13-linux-glibc2.5-x86_64 mysql-5.7.13

建立软连接

为了访问方便,不用每次都带版本号,建立一个mysql的快捷方式

1
2
[root@localhost local]# ln -s mysql-5.7.13 mysql

MySQL初始化

这个概念十分重要,由于在Mac版本时采用的是dmg的安装版,会因为没有初始化报一些错,最后虽然解决了,但是没明白引起错误的原因

添加mysql用户组

为系统添加一个mysql用户分组以及mysql的用户,以便系统对数据库进行操作

1
[root@localhost local]# useradd -r -M -s /sbin/nologin mysql

更改mysql目录的拥有者和分组

这里采用 -R 递归的方式更改

1
2
3
4
5
6
7
//1. 更改软连接为mysql用户组的mysql用户
[root@localhost local]# chown -R mysql.mysql ./mysql
//2. 更改mysql目录为mysql用户组的mysql用户
[root@localhost local]# chown -R mysql.mysql ./mysql-5.7.13
//3. 更改mysql目录属于mysql用户组
[root@localhost local]# chgrp -R mysql ./mysql-5.7.13

初始化---------非常非常重要的概念------------

首先切换到mysql目录下

1
2
[root@localhost local]# cd mysql-5.7.13

使用初始化指令

1
2
[root@localhost mysql-5.7.13]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql-5.7.13/ --datadir=/usr/local/mysql-5.7.13/data

第一,这里有些教程使用了 bin/mysql_install_db 命令,这个命令在mysql 5.7版本被弃用了,改为了 mysqld –initialize 如果使用错误的初始化指令可能会引起一些未知的BUG

第二,该命令最好在mysql目录下执行,因为如果不在此目录,脚本中有些命令根据相对路径寻址可能会找不到对应函数,造成初始化失败

该命令解析下来是以下内容

  1. in/mysqld –initialize:执行初始化
  2. –user=mysql:使用mysql用户进行初始化
  3. –basedir=/usr/local/mysql-5.7.13/:mysql的基础目录是该地址
  4. –datadir=/usr/local/mysql-5.7.13/data:mysql运行中产生的数据保存到这个data地址(不存在会新建文件夹)

初始化成功

初始化成功会看到一些Warning信息以及一个 初始密码

1
2
3
4
5
6
2016-07-19T13:47:19.644607Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-07-19T13:47:19.827684Z 0 [Warning] InnoDB: New log files created, LSN=45790
2016-07-19T13:47:19.865815Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2016-07-19T13:47:19.928363Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 5014f56a-4db7-11e6-89c4-000c29a4137c.
2016-07-19T13:47:19.929152Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2016-07-19T13:47:19.929802Z 1 [Note] A temporary password is generated for root@localhost: 5N=>Qkolqg.L

最后一行表明初始密码为 5N=>Qkolqg.L

MySQL的配置

配置文件和命令外移

MySQL初始化成功后按说就可以使用了,但是最好先进行一些简单的配置

1
2
3
4
5
//1. 首先把默认的配置文件设置给mysql,即etc目录下的my.cnf文件
[root@localhost mysql-5.7.13]# cp -a ./support-files/my-default.cnf /etc/my.cnf
//2. 再把mysql.server的命令函数移动到系统级
[root@localhost mysql-5.7.13]# cp -a ./support-files/mysql.server /etc/init.d/mysql.server

进入安全模式和重启

配置好之后,需要重启使新的配置生效,首先进入安全模式

1
2
3
4
5
[root@localhost mysql-5.7.13]# bin/mysqld_safe --user=mysql &
[1] 67153
[root@localhost mysql-5.7.13]# 2016-07-19T13:49:39.678770Z mysqld_safe Logging to '/usr/local/mysql-5.7.13/data/localhost.localdomain.err'.
2016-07-19T13:49:39.707079Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql-5.7.13/data

在安全模式下是看不到系统用户[root@localhost mysql-5.7.13]的,但是也可以输入指令,使用系统级的函数进行重启mysql

1
2
3
4
......
2016-07-19T13:49:39.707079Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql-5.7.13/data
/etc/init.d/mysql.server restart //这一行是安全模式下需要输入的指令

顺利的话会看到提示信息

1
2
3
4
5
Shutting down MySQL..2016-07-19T13:50:10.002192Z mysqld_safe mysqld from pid file /usr/local/mysql-5.7.13/data/localhost.localdomain.pid ended
SUCCESS!
Starting MySQL. SUCCESS!
[1]+ Done bin/mysqld_safe --user=mysql

设置mysql开机启动

1
2
[root@localhost mysql-5.7.13]# chkconfig --level 35 mysql.server on

更改初始密码

MySQL的旧版本是不会生成初始密码的,从5.7才开始生成貌似,输入密码的时候是看不到光标的

1
2
3
[root@localhost mysql-5.7.13]# bin/mysql -uroot -p
Enter password:

进入mysql程序,记得mysql的指令需要以分号结尾

1
2
3
4
5
6
7
8
mysql> SET PASSWORD=PASSWORD('root');
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye

由于密码改成了root,退出后就可以使用root root登陆了

初始化的时候没记住初始密码

可以去路径下查看,不过有时候文件不存在,我也不知道为什么

1
2
[root@localhost mysql-5.7.13]# cat /root/.mysql_secret

更改mysql命令为系统级

在刚刚登陆mysql的时候,我们是在mysql的目录下使用 bin/mysql 登陆的,如果想在任意目录下使用mysql,需要在系统的环境变量里添加该路径

如果你是root用户,需要修改root下的.bashrc文件

1
2
3
4
5
6
[root@localhost /]# cd root/
[root@localhost ~]# vim .bashrc
[root@localhost ~]# source .bashrc
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/usr/local/mysql/bin

如果你不是root用户,也可以修改自己用户路径/home/用户名/…下的.bashrc文件,原理是一样的

.bashrc文件的修改

打开.bashrc 后再最后最$PATH进行重新赋值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

PATH=$PATH:/usr/local/mysql/bin

export PATH

两个.bash文件的区别(小知识,可以不看)

进入命令行有2种方式,第一是login方式,比如ssh,第二个是non-login比如在图形界面下打开一个新的tab

  1. ~/.bash_profile:用户可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的 .bashrc 文件.

  2. ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.

由于/.bash_profile login 方式进入bash 运行的,/.bashrc 是 non-login 方式进入bash 运行的,且profile会调用后者,所以建议修改后者

  • Java
  • Net
  • Servlet
  • Server
  • DataBase
  • MySQL
  • Linux
  • Tutorial

展开全文 >>

&laquo; Prev1…2627282930…45Next &raquo;
© 2021 Alan Li
Hexo Theme Yilia by Litten
  • 所有文章
  • 关于我

tag:

  • iOS
  • Java
  • Collection
  • Python
  • Shell
  • CMake
  • Memory
  • JavaScript
  • Architecture
  • AnchorPoint
  • Android
  • Web
  • Annotation
  • AFNetworking
  • Window
  • ViewController
  • AutoLayout
  • Dozer
  • CoreAnimation
  • Cycle Retain
  • Block
  • UI
  • IDE
  • FrontEnd
  • CSS
  • Category
  • TableViewCell
  • Security
  • Net
  • JSP
  • Spring
  • C
  • MyBatis
  • Date
  • React
  • GCD
  • UITouch
  • Gesture
  • UIControl
  • Git
  • HTML
  • HTTPS
  • HTTP
  • Servlet
  • Server
  • DataBase
  • MySQL
  • Linux
  • Tutorial
  • Ajax
  • Type
  • JQuery
  • JSON
  • Exception
  • Parameter
  • Reflect
  • Thread
  • Sort
  • KVO
  • MKMapKit
  • Overlay
  • Maven
  • Configure
  • Tips
  • Transaction
  • Swift
  • NavigationBar
  • Nginx
  • Runtime
  • OpenCV
  • Property
  • Playground
  • Protocol
  • Redux
  • ScrollView
  • Session
  • Cookie
  • Shiro
  • Error
  • Singleton
  • RegEx
  • StackView
  • StatusBar
  • Base64
  • Socket
  • TCP
  • IP
  • TextField
  • CALayer
  • UILabel
  • View
  • Animation
  • Xcode
  • Hexo
  • Terminal
  • OC
  • Device
  • Log
  • Image
  • JUnit
  • Oval
  • Archive
  • XSS
  • Compiler
  • Aspect
  • Responder
  • Class
  • FireWall
  • RetainCount
  • Const
  • Frame
  • String
  • Symbols
  • Framework
  • CocoaPods
  • Unity
  • Message
  • Button
  • AuthorizationStatus
  • Struct
  • XCTest
  • NSNotification
  • Contact

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

我写的,大概率是错的。。。。。