接上一节;
本次实验系统为centos7.4 x64
1.1. mysql5.6安装过程
1.1.1. 创建mysql用户并指定mysql用户组。
创建用户并指定用户组
groupadd mysql
useradd -g mysql mysql -s /sblin/nologin
centos7.4 已默认创建mysql用户
1.1.2. 解压安装包
软件包家目录统一放在/usr/local
# cd / usr/local
解压mysql软件包
# tar -zxvf mysql-5.6.42-linux-glibc2.12-x86_64.tar.gz
注意:书中示例版本为mysql5.6.16,本次实验环境为mysql5.6.42
做软链接,方便日后升级
# ln -s mysql-5.6.42-linux-glibc2.12-x86_64 mysql
给mysql目录授权
chown mysql:mysql -R mysql
1.1.3. 创建安装目录
创建mysql数据库的数据目录datadir,创建在/data/mysql下面;
mkdir -p /data/mysql
chown -R /data/mysql mysql:mysql
[root@localhost local]# chown mysql:mysql -R mysql-5.6.42-linux-glibc2.12-x86_64/
1.1.4. 配置文件
由于是二进制安装方式 ,数据库配置文件需要自己配置好。配置文件如下:
[root@localhost etc]# vi my.cnf
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
port=3306
socket=/tmp/mysql.sock
basedir=/usr/local/mysql
datadir=/data/mysql
open_files_limit=65535
back_log=103
max_connections=512
max_connect_errors=100000
table_open_cache=512
external-locking=FALSE
max_allowed_packet=128M
sort_buffer_size=2M
join_buffer_size=2M
thread_cache_size=32M
tmp_table_size=96M
max_heap_table_size=96M
slow_query_log=1
slow_query_log_file=/data/mysql/slow.log
log-error=/data/mysql/error.log
long_query_time=0.5
server-id=1323306
log-bin=/data/mysql/mysql-bin
sync_binlog=1
binlog_cache_size=4M
max_binlog_cache_size=128M
max_binlog_size=1024M
expire_logs_days=7
key_buffer_size=32M
read_buffer_size=1M
read_rnd_buffer_size=16M
bulk_insert_buffer_size=64M
character-set-server=utf8
default-storage-engine=InnoDB
binlog_format=row
#gtid_mode=on
#log_slave_updates=1
#enforce_gtid_consistency=1
interactive_timeout=300
wait_timeout=300
transaction_isolation=REPEATABLE-READ
innodb_buffer_pool_size=1434M
innodb_data_file_path=ibdata1:1024M:autoextend
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=16M
innodb_log_file_size=256M
innodb_log_files_in_group=2
innodb_max_dirty_pages_pct=50
innodb_file_per_table=1
innodb_locks_unsafe_for_binlog=0
[mysqldump]
quick
max_allowed_packet=32M
# 后增加
pid-file=/data/mysql/mysql.pid
1.1.5. 初始化数据库
[root@localhost ~]# cd /usr/local/mysql/scripts/
[root@localhost scripts]# ls
mysql_install_db
# ./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql --defaults-file=/etc/my.cnf --user=mysql
当出现两个“OK”的四环,证明初始化数据库成功了。
1.1.6. 启动mysql数据库
[root@localhost mysql]# pwd
/usr/local/mysql/bin
[root@localhost bin]# ./mysqld_safe --defaults-file=/etc/my.conf &
启动过程日志如下:
[root@localhost bin]# ./mysqld_safe --defaults-file=/etc/my.cnf &
[1] 16030
[root@localhost bin]# 181104 22:12:15 mysqld_safe Logging to '/data/mysql/error.log'.
181104 22:12:15 mysqld_safe Starting mysqld daemon with databases from /data/mysql
查看mysql进程,验证示范启动成功:
设置mysql自动启动,需要拷贝下列文件到系统目录下。
# cp support-files/mysql.server /etc/init.d/mysqld
# chmod 755 /etc/init.d/mysqld
(*注意,mysql二进制安装默认的路径为/usr/local/mysql,启动脚本里/usr/local/mysql需要替换,如安装位置变换为/data/mysql56
>sed -i 's#/usr/local/mysql#/data/mysql56#g' /data/mysql56/bin/mysqld_safe /etc/init.d/mysqld )
配置环境变量
> echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
> source /etc/profile
添加到系统服务,用系统启动
# service mysqld start
添加自动启动
> chkconfig --add mysqld
> chkconfig mysqld on
> chkconfig --list mysqld
1.1.7. 配置文件优先级
mysql读取配置文件的顺序是
/etc/my.cnf >/etc/mysql/my.cnf >/usr/local/mysql/etc/my.cnf> ~/.my.cnf
# mysql --help|grep cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
1.1.8. mysqld启动选项
有三个参数
--defaults-file:使用指定位置的配置文件;默认/etc/my.cnf
--defaults-extra-file:除了读取默认配置文件,还读取额外的配置文件;
--no-defaults:忽略所有的配置文件
如一次性指定多个配置文件,则以最后一次读取的为准。
1.2. 创建密码并提高安全性
从系统进入数据库修改密码:
# mysql
跳转到数据库后:
mysql> use mysql;
mysql>update user set password=password(‘root123’) where user=’root’;
mysql>flush privileges;
直接在系统中修改root密码:
修改mysql密码(mysql5.6安装默认root密码为空)
mysqladmin -u root password ‘root123’
低于5.7版本数据库需要安全加固,只保留数据库用户未root,host为localhost的账号。
清理无用的mysql用户及库
登陆mysql
> mysql -uroot -p
查询用户
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql>
mysql>
mysql> select user,host from user;
+------+-----------------------+
| user | host |
+------+-----------------------+
| root | 127.0.0.1 |
| root | ::1 |
| | localhost |
| root | localhost |
| | localhost.localdomain |
| root | localhost.localdomain |
+------+-----------------------+
6 rows in set (0.00 sec)
> drop user "root"@"::1";
> drop user ""@"localhost";
> drop user ""@"localhost.localdomain";
> drop user "root"@"localhost.localdomain";
或
mysql> delete from user where user!=’root’ or host!=’localhost’;
删除无用库
> drop database test;
1.3. 关闭数据库
正常关闭:
# >cd /usr/local/mysql.bin
#> ./mysqladmin -uroot -proot123 shutdown
非正常关闭,直接kill掉mysql进程。
1.4. 基础数据库的名称
查看当前库有哪些
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql 5.7会多一个sys库
information_schema数据库是只读库,保存mysql服务器维护其他数据库的信息。
常用表:
tables:记录所有表基础信息
processlist:当前数据库的连接
global_status:数据库当前运行的各种状态值;
global_variables:查看数据库中参数
partitions:数据库中表分区的情况
INNODB_LOCKS,INNODB_TRX,INNODB_LOCK_WAITS;用来监控数据库中锁的情况。
mysql库在初始化过程中自动创建,用的最多的表为user。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29519108/viewspace-2218716/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29519108/viewspace-2218716/