第1章 MySQL数据库安装介绍
在当今的大中型互联网企业里,MySQL数据库服务几乎都是运行在Linux系列操作系统上,当然,你也可以运行在Windows/Unix等商业操作系统上,大中型互联网企业使用开源领域的产品MySQL数据库目的是,软件代码的开放性和以及无版权免费应用节约成本.因此推荐中小企业采用LAMP/LNMP网站架构。
不同场景不同版本的MySql的安装可以有多种方法。
1.1 yum/rpm方式安装MySQL
MySQL官方网站提供不同版本的RPM安装包,并且针对不同硬件或操作系统平台,又分为不同类型的安装包,大家都可以在官方网站下载页面进行选择,国内也有一些互联网公司提供了镜像,比如网易,阿里云公司提供的镜像资源就非常不错。
注意:yum/rpm方式安装MySQL适合所有MySQL软件产品系列。
1.1.1 rpm包方式安装mysql
rpm包的安装非常简单,以mysql-5.1.40为例,我们可以光盘或者网上下载到四个安装包:
MySQL-client-community-5.1.40-0.rhel5.x86_64.rpm MySQL-devel-community-5.1.40-0.rhel5.x86_64.rpm MySQL-shared-community-5.1.40-0.rhel5.x86_64.rpm MySQL-server一community-5.1.40-0.rhel5.x86_64.rpm
其中,我们必须安装MySQL-server*和MySQLclient*软件包,对于另外二个则可视实际需要,但是建议一起安装,为此我们可以把这四个RPM放置于某个目录中,然后执行shell命令:
rpm -ivh MySQL-*
则可以完成MySQL软件安装任务,剩下的就是如何配置的问题了。
1.1.2 yum方式安装mysql
yum方式安装mysql安装极其简单,只要执行一下命令即可:
yum install mysql-server
1.1.2.1 yum/rpm方式安装MySQL应用场景
yum/rpm安装适合对数据库要求不太高的场合,例如并发不大,公司内部,企业内部的一些应用场景,大的门户把源码根据企业的需求制作成rpm,搭建yum仓库,yum install xxx -y。
参考资料:
1.2 常规方式编译安装MySQL
第一条最正宗的产品线5.1及以前:
所谓常规方式编译安装MySQL就是延续早期MySQL的3部曲安装方式,即./configure;make;make install.生产场景的具体命令及参数为:
./configure \ --prefix=/usr/local/mysql-5.1.72 \ --with-unix-socket-path=/usr/local/mysql-5.1.72/tmp/mysql.sock \ --localstatedir-/usr/local/mysql-5.1.72/data \ --enable-assembler \ --enable-thread-safe-client \ --with-mysqld-user=mysql \ --with-big-tables \ --without-debug \ --with-pthread \ --enable-assembler \ --with-extra-charsets=complex \ --with-readline \ --with-ssl \ --with-embedded-server \ --enable-local-infile \ --with-plugins=partition, innobase \ --with-mysqld-ldflags=-all-static \ --with-client-ldflags=-all-static make make install
提示:此种方式适合所有MySQL5.0.xx-5.1.xx产品系列,是最常规的编译方式。
1.3 采用cmake方式编译安装MySQL
由于MySQL5.5.xx-5.6.xx产品系列特殊性,所以编译方式也和早期的产品安装方式不同,采用cmake或gmake方式编译安装。即./configure;make;make install,生产场景的具体命令及参数为:
tar zxf mysql-5.5.32.tar.gz cd mysql-5.5.32 cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysq1-5.5.32 \ -DMYSQL_DATADIR=/usr/local/mysq1-5.5.32/data \ -DMYSQL_UNIX_ADDR=//usr/local/mysq1-5.5.32/tmp/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSET=gbk,gb2312,utf8,ascii \ -DENABLED_LOCAL_INFILE=ON \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ -DWITHOUT_PRATITION_STORAGE_ENGINE=1 \ -DWITN_FAST_MUTEXES=1 \ -DWITN_ZLIB=bundled \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_READLINE=1 \ -DWITH_EMBEDDED_SERVER=1 \ -DWITH_DEBUG=1 \
提示:编译时可配的选项很多.具休可参考结尾附录或官方文档。
make make install
如果上述操作未出现错误.则MySQL5.5.32软件cmake方式的安装就算成功了。
1.4 采用二进制方式免编译安装MySQL
采用二进制方式免编译安装mysql.这种方法和yum/rpm包安装方式类似.适合各类MySQL产品系列,不需要复杂的编译设里及编译时间等待,直接解压下载的软件包,初始化即可完成mysgl的安装启动。
1.5 如何正确选择MySQL的安装方式
yum/rpm安装适合对数据库要求不太高的场合,例如并发不大,公司内部,企业内部的一些应用场景.二进制免安装比较简单方便,适合5.0-5.1和5.5-5.6系列,是很多专业DBA的选择,普通运维人员多采用编译的方式,5.0-5.1系列就是常规编译方式,5.5-5.6系列就是cmake编译方式。
所以综合来讲,这些安装方式都是可以使用的,只是不同层次的人的习惯不同,性能差距不是很大。
建议选择:首先是mysql5.5及以上的版本,安装方式机器数量少的话,推荐cmake编译方式,这是大多数运维人员的选择。数量多的话就用二进制免安装,也是没问题的,这是某些DBA的偏爱。
第2章 安装MySQL
2.1 编译安装MySQL
2.1.1 系统环境
2.1.1.1 CentOS 6.9:
[root@db02 ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@db02 ~]# uname -r 2.6.32-696.el6.x86_64 [root@db02 ~]# service iptables status iptables: Firewall is not running. [root@db02 ~]# getenforce Disabled [root@db02 ~]# hostname -I 10.0.0.42 172.16.1.42
2.1.1.2 CentOS 7.2:
[root@db01 ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@db01 ~]# uname -r 3.10.0-327.el7.x86_64 [root@db01 ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) [root@db01 ~]# getenforce Disabled [root@db01 ~]# hostname -I 10.0.0.10 172.16.1.10
2.1.2 安装依赖程序
[root@db02 ~]# yum install -y ncurses-devel libaio-devel [root@db02 ~]# rpm -qa ncurses-devel libaio-devel libaio-devel-0.3.107-10.el6.x86_64 ncurses-devel-5.7-4.20090207.el6.x86_64
2.1.3 安装Cmake编译软件
[root@db02 ~]# yum install -y cmake [root@db02 ~]# rpm -qa cmake cmake-2.8.12.2-4.el6.x86_64
2.1.4 添加mysql用户
[root@db02 ~]# useradd -s /sbin/nologin -M -u800 mysql [root@db02 ~]# id mysql uid=800(mysql) gid=800(mysql) groups=800(mysql)
2.1.5 获取MySQL软件包
MySQL软件包下载地址为:
- MySQL源码包和二进制包的名称:
MySQL软件 | 软件名 |
MySQL源码安装包 | mysql-5.7.20.tar.gz |
MySQL源码安装包(带boost版本) | mysql-boost-5.7.20.tar.gz |
MySQL二进制安装包 | mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz |
说明:MySQL5.7版本开始编译安装的时候需要boost软件支持。
提示:在生产场景中二进制和源码包两种安装方法都是可以使用的,其应用场景一般没什么太大差别,不同之处在于二进制的安装包较大,名字和源码包也有些区别,二进制安装过程比源码更快。
2.1.6 编译安装MySQL
2.1.6.1 CentOS 6.9:
[root@db02 ~]# cd /server/tools/ [root@db02 tools]# tar xf mysql-5.6.36.tar.gz [root@db02 tools]# cd mysql-5.6.36 # cmake编译安装 [root@db02 mysql-5.6.36]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.36 \ -DMYSQL_DATADIR=/usr/local/mysql-5.6.36/data \ -DMYSQL_UNIX_ADDR=/usr/local/mysql-5.6.36/tmp/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ -DWITH_ZLIB=bundled \ -DWITH_SSL=bundled \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_EMBEDDED_SERVER=1 \ -DENABLE_DOWNLOADS=1 \ -DWITH_DEBUG=0 [root@db02 mysql-5.6.36]# make && make install
2.1.6.2 CentOS 7.2:
[root@db01 ~]# cd /server/tools/ [root@db01 tools]# tar xf mysql-boost-5.7.20.tar.gz [root@db01 tools]# cd mysql-5.7.20/ [root@db01 mysql-5.7.20]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.20 \ -DMYSQL_DATADIR=/usr/local/mysql-5.7.20/data \ -DMYSQL_UNIX_ADDR=/usr/local/mysql-5.7.20/tmp/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ -DWITH_BOOST=/server/tools/mysql-5.7.20/boost \ # 与编译MySQL 5.6.x版本不同之处 -DWITH_ZLIB=bundled \ -DWITH_SSL=bundled \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_EMBEDDED_SERVER=1 \ -DENABLE_DOWNLOADS=1 \ -DWITH_DEBUG=0 [root@db01 mysql-5.7.20]# make && make install
提示:MySQL编译安装时间较长(尤其在CentOS 7上编译安装),请耐心等待。
2.1.7 创建mysql目录软链接
2.1.7.1 CentOS 6.9:
[root@db02 ~]# ln -s /usr/local/mysql-5.6.36/ /usr/local/mysql
2.1.7.2 CentOS 7.2:
[root@db01 ~]# ln -s /usr/local/mysql-5.7.20/ /usr/local/mysql
2.1.8 创建sock目录
[root@db02 ~]# mkdir -p /usr/local/mysql/tmp
2.1.9 复制配置文件
2.1.9.1 CentOS 6.9:
[root@db02 ~]# cp /usr/local/mysql/support-files/my*.cnf /etc/my.cnf cp: overwrite `/etc/my.cnf' y
2.1.9.2 CentOS 7.2:
# 手动编写配置文件 [root@db01 ~]# mv /etc/my.cnf{,.bak} [root@db01 ~]# vim /etc/my.cnf [client] port=3306 socket=/usr/local/mysql/tmp/mysql.sock [mysqld] port=3306 user=mysql socket=/usr/local/mysql/tmp/mysql.sock pid-file=/usr/local/mysql/data/mysql.pid basedir=/usr/local/mysql datadir=/usr/local/mysql/data
2.1.10 初始化及配置数据库
2.1.10.1 CentOS 6.9:
[root@db02 ~]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --user=mysql 2017-11-13 11:54:11 39514 [Note] InnoDB: Shutdown completed; log sequence number 1625977 OK # 安装成功标志 2017-11-13 11:54:13 39536 [Note] InnoDB: Shutdown completed; log sequence number 1625987 OK # 安装成功标志
2.1.10.2 CentOS 7.2:
[root@db01 ~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 2017-11-13T08:27:06.432840Z 1 [Note] A temporary password is generated for root@localhost: m*znf;srR7:, # 安装成功标志为自动生成root密码
2.1.11 设置mysql目录权限
[root@db02 ~]# chown -R mysql.mysql /usr/local/mysql/
提示:如果出现问题可以尝试直接给原目录授权。
2.1.12 复制mysql启动文件
[root@db02 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld [root@db02 ~]# chmod 700 /etc/init.d/mysqld
2.1.13 设置mysql开机自启动
2.1.13.1 CentOS 6.9:
[root@db02 ~]# chkconfig mysqld on [root@db02 ~]# chkconfig --list mysqld mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
2.1.13.2 CentOS 7.2:
[root@db01 ~]# echo "/etc/init.d/mysqld start" >> /etc/rc.local [root@db01 ~]# chmod +x /etc/rc.local
2.1.13.3 设置mysql全局路径
[root@db02 ~]# echo 'PATH=/usr/local/mysql/bin/:$PATH' >>/etc/profile [root@db02 ~]# tail -1 /etc/profile PATH=/usr/local/mysql/bin/:$PATH [root@db02 ~]# source /etc/profile [root@db02 ~]# echo $PATH /usr/local/mysql/bin/:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
2.1.14 启动mysql
[root@db02 ~]# /etc/init.d/mysqld start Starting MySQL. SUCCESS! [root@db02 ~]# netstat -lntup|grep 330 tcp 0 0 :::3306 :::* LISTEN 39938/mysqld
2.2 编译参数详解
2.2.1 安装参数选项
在下表中,“CMAKE_INSTALL_PREFIX”的值表示的是安装根目录,其他参数值的路径都是相对于根目录的,当然也可以直接使用绝对路径,具体如下:
参数值说明 | 配置选项 | CMak选项 |
安装根目录 | --prefix=/usr | -DCMAKE_INSTALL_PREFIX=/usr |
mysqld目录 | --libexecdir=/usr/sbin | -DINSTALL_SBINDIR=sbin |
数据存储目录 | --localstatedir=/var/lib/mysql | -DMYSQL_DATADIR=/var/lib/mysql |
配置文件(my.cnf)目录 | --sysconfdir=/etc/mysql | -DSYSCONFDIR=/etc/mysql |
插件目录 | --with-plugindir=/usr/lib64/mysql/plugin | -DINSTALL_PLUGINDIR=lib64/mysql/plugin |
手册文件目录 | --mandir=/usr/share/man | -DINSTALL_MANDIR=share/man |
共享数据目录 | --sharedstatedir=/usr/share/mysql | -DINSTALL_SHAREDIR=share |
Library库目录 | --libdir=/usr/lib64/mysql | -DINSTALL_LIBDIR=lib64/mysql |
Header安装目录 | --includedir=/usr/include/mysql | -DINSTALL_INCLUDEDIR=include/mysql |
信息文档目录 | --infodir=/usr/share/info | -DINSTALL_INFODIR=share/info |
2.2.2 存储引擎选项
存储引擎是以插件的形式存在的,所以该选项可以控制插件的构建,比如指定使用某个特定的引擎:
参数值说明 | 配置选项 | CMak选项 |
安装根目录 | --with-plugins=csv,myisam,
myisammrg,heap,innobase, archive,blackhole |
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 |
提示:CMake中也可以使用“ON”来替代数字1,它们是等效的。
2.2.3 库文件加载选项
该选项指明Mysql使用库的情况:
参数值说明 | 配置选项 | CMak选项 |
readline库 | --with-readline | -DWITH_READLINE=1 |
SSL库 | --with-ssl=/usr | -DWITH_SSL=system |
zlib库 | --with-zlib-dir=/usr | -DWITH_ZLIB=system |
libwrap库 | --without-libwrap | -DWITH_LIBWRAP=0 |
2.2.4 其他选项
CMake编译选项支持大部分之前版本的MySQL编译选项,新老编译选项的差别在于:之前的是小写,现在全部变成了大写,之前采用双横线,现在使用单横线,之前使用的破折号,现在取而代之的是使用下划线:
参数值说明 | 配置选项 | CMak选项 |
TCP/IP端口 | --with-tcp-port-=3306 | -DMYSQL_TCP_PORT=3306 |
UNIX socket文件 | --with-unix-socket-path=/tmp/mysqld.sock | -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock |
启用加载本地数据 | --enable-local-infile | -DENABLED_LOCAL_INFILE=1 |
扩展字符支持 | --with-extra-charsets=all(默认:all) | -DEXTRA_CHARSETS=all(默认:all) |
默认字符集 | --with-charset=utf8 | -DDEFAULT_CHARSET=utf8 |
默认字符校对 | --with-collation=utf8_general_ci | -DDEFAULT_COLLATION=utf8_general_ci |
Build the server | --with-server | 无 |
嵌入式服务器 | --with-embedded-server | -DWITH_EMBEDDED_SERVER=1 |
libmysqld权限控制 | --with-embedded-privilege-control | 无 |
安装文档 | --without-docs | 无 |
Big tables支持 | --with-big-tables, --without-big-tables | 无 |
mysqld运行用户 | --with-mysqld-user=mysql | -DMYSQL_USER=mysql |
调试模式 | --without-debug(默认禁用) | -DWITH_DEBUG=0(默认禁用) |
GIS支持 | --with-geometry | 无 |
社区功能 | --enable-community-features | 无 |
Profiling | --disable-profiling(默认启用) | -DENABLE_PROFILING=0(默认启用) |
pstack | --without-pstack | 无(新版移除该功能) |
汇编字符串函数 | --enable-assembler | 无 |
构建类型 | --build=x86_64-pc-linux-gnu | 没有等效参数 |
交叉编译主机 | --host=x86_64-pc-linux-gnu | 没有等效参数 |
客户端标志 | --with-client-ldflags=-lstdc++ | 无 |
线程安全标志 | --enable-thread-safe-client | 无 |
注释存储类型 | --with-comment='string' | -DWITH_COMMENT='string' |
Shared/static binaries | --enable-shared --enable-static | 无 |
内存使用控制 | --with-low-memory | 无 |
2.2.5 CentOS 7完整编译参数
https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
2.3 二进制安装MySQL
2.3.1 系统环境
同编译安装。
2.3.2 添加mysql用户
[root@db02 ~]# useradd -s /sbin/nologin -M -u800 mysql [root@db02 ~]# id mysql uid=800(mysql) gid=800(mysql) groups=800(mysql)
2.3.3 解压并移动到程序目录
2.3.3.1 CentOS 5.6.x
[root@lb02 ~]# cd /server/tools/ [root@lb02 tools]# tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz [root@lb02 tools]# mv mysql-5.6.34-linux-glibc2.5-x86_64 /usr/local/mysql-5.6.34
2.3.3.2 CentOS 5.7.x
[root@lb02 ~]# cd /server/tools/ [root@lb02 tools]# tar xf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz [root@lb02 tools]# mv mysql-5.7.18-linux-glibc2.5-x86_64 /usr/local/mysql-5.7.18
2.3.4 创建mysql软链接
2.3.4.1 CentOS 5.6.x
[root@test local]# ln -s /usr/local/mysql-5.6.34/ /usr/local/mysql
2.3.4.2 CentOS 5.7.x
[root@lb02 ~]# ln -s /usr/local/mysql-5.7.18/ /usr/local/mysql
2.3.5 赋予安装目录权限
[root@lb02 ~]# chown -R mysql.mysql /usr/local/mysql
2.3.6 初始化数据库
2.3.6.1 CentOS 5.6.x
[root@lb02 ~]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ --user=mysql 2017-11-13 18:36:03 24774 [Note] InnoDB: Shutdown completed; log sequence number 1625977 OK 2017-11-13 18:36:09 24796 [Note] InnoDB: Shutdown completed; log sequence number 1625987 OK
2.3.6.2 CentOS 5.7.x
[root@lb02 ~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 2017-11-13T09:52:24.770847Z 1 [Note] A temporary password is generated for root@localhost: <t#ip&*F97+
2.3.7 复制启动脚本
2.3.7.1 CentOS 5.6.x
[root@lb02 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld [root@lb02 ~]# chmod 700 /etc/init.d/mysqld
2.3.7.2 CentOS 5.7.x
[root@lb02 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld [root@lb02 ~]# chmod 700 /etc/init.d/mysqld
2.3.8 编辑配置文件
[root@db01 ~]# mv /etc/my.cnf{,.bak} [root@db01 ~]# vim /etc/my.cnf [client] port=3306 socket=/tmp/mysql.sock [mysqld] port=3306 user=mysql socket=/tmp/mysql.sock pid-file=/usr/local/mysql/data/mysql.pid basedir=/usr/local/mysql datadir=/usr/local/mysql/data
2.3.9 设置开机自启动
[root@lb02 ~]# chkconfig --add mysqld [root@lb02 ~]# chkconfig mysqld on
2.3.10 设置全局变量
[root@lb02 ~]# echo 'PATH=/usr/local/mysql/bin/:$PATH' >>/etc/profile [root@lb02 ~]# source /etc/profile
2.3.11 启动服务
[root@lb02 ~]# /etc/init.d/mysqld start
2.4 Yum安装MySQL
2.4.1 添加MySQL源
2.4.1.1 CentOS 6:
[root@lb02 ~]# wget https://repo.mysql.com//mysql57-community-release-el6-11.noarch.rpm [root@lb02 ~]# rpm -ivh mysql57-community-release-el6-11.noarch.rpm
2.4.1.2 CentOS 7:
[root@lb02 ~]# wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm [root@lb02 ~]# rpm -ivh mysql57-community-release-el6-11.noarch.rpm
2.4.2 安装MySQL
[root@lb02 ~]# yum install -y mysql-server
2.4.3 文件安装明细
[root@test ~]# rpm -ql mysql-community-server /etc/init.d/mysqld /etc/logrotate.d/mysql /etc/my.cnf /etc/my.cnf.d /usr/bin/innochecksum /usr/bin/lz4_decompress /usr/bin/my_print_defaults /usr/bin/myisam_ftdump /usr/bin/myisamchk /usr/bin/myisamlog /usr/bin/myisampack /usr/bin/mysql_install_db /usr/bin/mysql_plugin /usr/bin/mysql_secure_installation /usr/bin/mysql_ssl_rsa_setup /usr/bin/mysql_tzinfo_to_sql /usr/bin/mysql_upgrade /usr/bin/mysqld_multi /usr/bin/mysqld_safe /usr/bin/mysqldumpslow /usr/bin/perror /usr/bin/replace /usr/bin/resolve_stack_dump /usr/bin/resolveip /usr/bin/zlib_decompress /usr/sbin/mysqld /var/lib/mysql /var/lib/mysql-files /var/lib/mysql-keyring /var/run/mysqld
第3章 MySQL基本使用
3.1 更改管理员密码
# 更改管理员密码:mysqladmin -u root -p旧密码 password '新密码' [root@db02 ~]# mysqladmin -uroot password '12345678' # 或 mysqladmin password '12345678' [root@db02 ~]# mysql -uroot -p12345678 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.7.20 Source distribution 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>
3.2 数据库操作
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.02 sec) 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> show tables; +---------------------------+ | Tables_in_mysql | +---------------------------+ | columns_priv | | db | | event | | func | | general_log | | help_category | | help_keyword | | help_relation | | help_topic | | innodb_index_stats | | innodb_table_stats | | ndb_binlog_index | | plugin | | proc | | procs_priv | | proxies_priv | | servers | | slave_master_info | | slave_relay_log_info | | slave_worker_info | | slow_log | | tables_priv | | time_zone | | time_zone_leap_second | | time_zone_name | | time_zone_transition | | time_zone_transition_type | | user | +---------------------------+ 28 rows in set (0.01 sec) # 删除不需要的数据库 mysql> drop database test; Query OK, 0 rows affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+ 3 rows in set (0.00 sec)
3.3 用户操作
mysql> select user,host,password from mysql.user; +------+-----------+-------------------------------------------+ | user | host | password | +------+-----------+-------------------------------------------+ | root | localhost | *84AAC12F54AB666ECFC2A83C676908C8BBC381B1 | | root | db02 | | | root | 127.0.0.1 | | | root | ::1 | | | | localhost | | | | db02 | | +------+-----------+-------------------------------------------+ 6 rows in set (0.00 sec) # 删除不需要不安全的用户 mysql> drop user ''@'db02'; Query OK, 0 rows affected (0.00 sec) mysql> drop user 'root'@'db02'; Query OK, 0 rows affected (0.00 sec) mysql> drop user 'root'@'127.0.0.1'; Query OK, 0 rows affected (0.00 sec) mysql> drop user 'root'@'::1'; Query OK, 0 rows affected (0.00 sec) mysql> drop user ''@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> select user,host,password from mysql.user; +------+-----------+-------------------------------------------+ | user | host | password | +------+-----------+-------------------------------------------+ | root | localhost | *84AAC12F54AB666ECFC2A83C676908C8BBC381B1 | +------+-----------+-------------------------------------------+ 1 row in set (0.00 sec)
