一、对于MySQL用户来说,使用MySQL的第一步就是启动它。要启动MySQL,我们需要mysqld或mysqld_safe命令。默认情况下,直接执行mysqld或mysqld_safe即可。如
shell> mysqld & 或
shell> mysqld_safe &。当然不是所有事情都那么顺利,如果启动不了,请指定相关的参数。服务器运行的前提是你已经执行了mysql_install_db脚本。当然,如果就这样启动,将有很多功能启动不了。如没有binlog,当某一天你不小心把数据库弄挂了,就没有挽回的余地了。所以在启动时,要先想好我们所需要的配置选项。
mysqld_safe的常用参数如下:
参数 | 描述 |
---|---|
--basedir=path | 重要:指定MYSQL的安装路径 |
--core-file-size=size | MYSQL能创建文件的大小,此参数将会传给ulimit,一般不设置。 |
--datadir=path | MYSQL存放数据的路径 |
--defaults-extra-file=file_name | 在全局配置后与用户配置前读指定的配置文件,如果填写的不是完整路径而仅仅是文件名,则读相对路径下的文件。与mysql内参数一样 |
--defaults-file=file_name | 读配置文件的路径,与mysql内参数一样 |
--ledir=path | 如果mysqld_safe找不到服务器,使用此选项指定服务器位置 |
--log-error=file_name | 写错误日志到指定的文件内 |
--malloc-lib=[lib-name] | 使用别的库替换malloc库 |
--mysqld=prog_name | 设置服务器名称 |
--nice=priority | 设置服务器被CPU调用的优先级 |
--no-defaults | 不读任何配置文件 |
--open-files-limit=count | MYSQL能打开的最大文件数 |
--pid-file=file_name | 指定PID文件名 |
--plugin-dir=path | 指定插件安装路径 |
--port=number | 服务器监听的端口号 |
--skip-kill-mysqld | 不杀掉失效的myslqd进程 |
--skip-syslog | 不写错误信息到syslog |
--socket=path | socket文件读取路径 |
--syslog | 写错误信息到syslog |
--syslog-tag=tag | 写到syslog内的标记 |
--timezone=timezone | 设置时区 |
--user={user_name|user_id} | 设置运行用户 |
通常,我们需要设置--basedir、--datadir、--user 这样可以显式控制数据文件的存放位置、以什么用户运行。在默认情况下,启动mysqld_safe时会读取my.cnf配置文件。我们可以在以下位置放置my.cnf如/etc下,MYSQL安装目录下等。mysqld_safe会按一定的顺序去读取,下面是一个配置文件读取顺序表:
文件名 | 作用域 |
---|---|
/etc/my.cnf | 全局配置 |
/etc/mysql/my.cnf | 全局配置 |
SYSCONFDIR/my.cnf | 全局配置 |
$MYSQL_HOME/my.cnf | 服务器指定配置 |
defaults-extra-file | 指定配置文件路径 |
~/.my.cnf | 用户范围的配置 |
也就是/etc/my.cnf > /etc/mysql/my.cnf > SYSCONFIGDIR/my.cnf > MYSQL_HOME/my.cnf > defaults-extra-file指定的配置文件路径 > 用户目录下的my.cnf。而通过命令行添加的参数会覆盖所有配置文件中的参数。当然,如果你想要自定义配置文件的路径,可以使用--defaults-file参数。
老规矩,给个例子大家参考下:shell> /usr/local/mysql/bin/mysqld_safe --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data &
启动后最好用ps aux 看下mysqld的进程是否在进程列表中,以确认启动成功。
二、在服务器启动成功后,我们就可以进行数据库操作了。要操作数据库,首先得通过mysql的客户端连到server。在这里,我们使用mysql客户端脚本进行服务器的连接。
shell> mysql --host=localhost --user=myname --password=mypass mydb
或shell> mysql -h localhost -u myname -pmypass mydb
如果用下面这种形式,-p后应紧跟密码,不要有空格,否则密码会被命令解析成数据库名噢。
其它参数:
参数 | 描述 | 适用 | 弃用 |
---|---|---|---|
--auto-rehash | 启动名字自动补全功能 | ||
--auto-vertical-output | 启动结果集垂直显示 | ||
--binary-mode | 关闭将\r\n转换为\n和以\0作为查询结尾的处理 | ||
--bind-address=ip_address | 绑定指定的网络接口进行连线 | ||
--character-sets-dir=path | 指定字符集的安装目录 | ||
--column-names | 在结果集中显示列名 | ||
--column-type-info | 在结果集中显示数据库及表的元信息 | ||
--comments | 将注释发送给服务器 | ||
--compress | 发送服务器与客户端之间的传输信息 | ||
--connect_timeout=value | 连接超时时间限制 | ||
--database=dbname | 要使用的数据库名 | ||
--debug[=debug_options] | 写debug日志 | ||
--debug-check | 在客户端退出时打印一些debug信息 | ||
--debug-info | 在客户端退出时打印一些debug信息,包括cpu和内存的统计 | ||
--default-auth=plugin | 使用验证插件 | ||
--default-character-set=charset_name | 指定默认的字符集 | ||
--defaults-extra-file=file_name | 在全局配置后与用户配置前读指定的配置文件,如果填写的不是完整路径而仅仅是文件名,则读相对路径下的文件。 | ||
--defaults-file=file_name | 只读指定的配置文件,如果填写的不是完整路径而仅仅是文件名,则读相对路径下的文件。 | ||
--defaults-group-suffix=str | 为配置文件名内的组加后缀 | ||
--delimiter=str | 设置声明语句后的分隔符 | ||
--execute=statement | 直接执行语句 | ||
--force | 如果SQL出错,继续执行 | ||
--host=host_name | 指定连接的主机 | ||
--html | 生成html输出 | ||
--init-command=str | 在连接到服务器后,运行指定的SQL | ||
--line-numbers | 当错误发生时记下行号 | ||
--max_allowed_packet=value | 服务器与客户端通讯的最大包的长度 | ||
--max_join_size=value | 当使用--safe-updates时限制最大行数 | ||
--net_buffer_length=value | TCP或socket连线的buffer大小 | ||
--no-auto-rehash | 关闭自动补全功能 | ||
--no-beep | 当发生错误时不发出beep报警 | ||
--no-defaults | 不使用配置文件 | ||
--password[=password] | 在建立连线时输入密码 | ||
--plugin-dir=path | 安装指定插件 | ||
--port=port_num | 连接使用的端口号 | ||
--print-defaults | 打印配置文件信息 | ||
--prompt=format_str | 设置提示符格式 | ||
--protocol=type | 连线使用的协议{TCP|SOCKET|PIPE|MEMORY} SOCKET仅用于unix,PIPE和MEMORY仅用于WINDOWS,TCP通用 | ||
--quick | 不缓存查询结果 | ||
--raw | 不转义列值 | ||
--reconnect | 自动重连 | ||
--show-warnings | 显示每次查询后的警告信息 | ||
--silent | 产生更少的输出 | ||
--skip-auto-rehash | 禁止名字补全功能 | ||
--skip-column-names | 在结果集中不写列名 | ||
--skip-reconnect | 禁止重新连接 | ||
--socket=path | 本地连线,指定socket文件位置 | ||
--ssl | 启动SSL连接 | ||
--syslog | 记录交互式声明到syslog | 5.7.1 | |
--table | 表格式输出 | ||
--tee=file_name | 添加输出的拷贝到指定的文件内 | ||
--unbuffered | 在每次查询后刷新缓存 | ||
--user=user_name | 连线时输入的用户名 | ||
--verbose | 详细模式 | ||
--version | 显示版本 | ||
--vertical | 每列一行显示 | ||
--wait | 如果不能建立连线,等待并重试 | ||
--xml | 输出XML格式 |
里面有几个选项是比较常用的,在这里稍微提下。通常我们需要使用--user、--host、--password来建立连接,如果你是在本地进行连线,可以使用--socket指定socket文件。默认情况下,mysql是一个交互式的shell。如果你想直接得出查询结果,可以使用--execute选项,可以参考以下命令:/usr/local/mysql/bin/mysql --user=root --host=127.0.0.1 --execute="select * from user"。
三、客户端管理工具mysqladmin的使用。mysqladmin是一个客户端管理工具,你能使用它检查服务器的配置和当前状态或者创建和删除数据库以及更多其它的操作。
mysqladmin的命令格式如下:shell> mysqladmin [options] command [command-arg]
也就是mysqladmin后跟前缀为--的选项,接着跟命令,然后在命令后跟命令参数。
可选命令:
命令名 |
描述 |
create db_name |
创建数据库 |
debug |
写debug信息到error.log |
drop db_name |
删除数据库 |
extended-status |
显示服务器状态变量和它们的值 |
flush-hosts |
刷新主机缓存信息 |
flush-privileges |
刷新权限表 |
flush-status |
清除状态变量 |
flush-tables |
刷新所有的表 |
flush-threads |
刷新线程缓存 |
kill id,id,... |
杀掉服务器线程 |
password new-password |
设置新密码 |
ping |
ping服务器 |
processlist |
显示活动的服务器线程列表 |
reload |
重载授权表 |
refresh |
刷新所有的表并关闭打开的日志文件 |
shutdown |
关闭服务器 |
start-slave |
在从服务器上开始主从复制 |
status |
显示简短的服务器状态消息 |
stop-slave |
在从服务器上停止主从复制 |
variables |
显示服务器系统变量和它们的值 |
version |
显示服务器版本信息 |
Uptime(status命令结果集中显示的) |
status结果集中显示服务器运行时间 |
Threads(status命令结果集中显示的) |
status结果集中显示服务器活动进程数 |
Questions(status命令结果集中显示的) |
status结果集中显示自服务器运行开始客户端的查询数 |
Slow queries(status命令结果集中显示的) |
status结果集中显示慢查询的数量 |
Opens(status命令结果集中显示的) |
status结果集中显示服务器打开表的数量 |
Flush tables(status命令结果集中显示的) |
status结果集中显示服务器执行flush、refresh和reload命令的次数 |
Open tables(status命令结果集中显示的) |
status结果集中显示当前打开表的数量 |
可选参数列表如下所示:
参数 | 描述 | 适用 | 弃用 |
---|---|---|---|
--bind-address=ip_address | 同mysql命令 | ||
--compress | 同mysql命令 | ||
--connect_timeout=seconds | 同mysql命令 | ||
--count=# | 重复执行命令的次数,需要配合--sleep参数 | ||
--debug[=debug_options] | 同mysql命令 | ||
--debug-check | 同mysql命令 | ||
--debug-info | 同mysql命令 | ||
--default-auth=plugin | 同mysql命令 | ||
--default-character-set=charset_name | 同mysql命令 | ||
--defaults-extra-file=file_name | 同mysql命令 | ||
--defaults-file=file_name | 同mysql命令 | ||
--defaults-group-suffix=str | 同mysql命令 | ||
--force | 同mysql命令 | ||
--help | 同mysql命令 | ||
--host=host_name | 同mysql命令 | ||
--no-beep | 同mysql命令 | ||
--no-defaults | 同mysql命令 | ||
--password[=password] | 同mysql命令 | ||
--plugin-dir=path | 同mysql命令 | ||
--port=port_num | 同mysql命令 | ||
--print-defaults | 同mysql命令 | ||
--protocol=type | 同mysql命令 | ||
--relative | 当--sleep选项启动时显示上次值与当前值的差别 | ||
--secure-auth | 同mysql命令 | 5.7.4 | 5.7.5 |
--show-warnings | 同mysql命令 | 5.7.2 | |
--shutdown_timeout=seconds | 等待服务器关闭的最大秒数 | ||
--silent | 同mysql命令 | ||
--sleep=delay | 执行重复的命令,在之间睡眠N秒 | ||
--socket=path | 同mysql命令 | ||
--ssl | 同mysql命令 | ||
--ssl-ca=file_name | 同mysql命令 | ||
--ssl-capath=dir_name | 同mysql命令 | ||
--ssl-cert=file_name | 同mysql命令 | ||
--ssl-cipher=cipher_list | 同mysql命令 | ||
--ssl-crl=file_name | 同mysql命令 | ||
--ssl-crlpath=dir_name | 同mysql命令 | ||
--ssl-key=file_name | 同mysql命令 | ||
--ssl-verify-server-cert | 同mysql命令 | ||
--user=user_name, | 同mysql命令 | ||
--verbose | 同mysql命令 | ||
--version | 同mysql命令 | ||
--vertical | 同mysql命令 | ||
--wait | 同mysql命令 |
给个参考大家:/usr/local/mysql/bin/mysqladmin --user=root --host=127.0.0.1 processlist --sleep=5 --count=3 表示显示进程列表,显示3次,间隔时间5秒。