mysqld_safe

合集下载

Linux服务器安装JDK、MySQL和Tomcat,发布web项目解决404问题

Linux服务器安装JDK、MySQL和Tomcat,发布web项目解决404问题

Linux服务器安装JDK、MySQL和Tomcat,发布web项⽬解决404问题你是否也遇到这样的问题Linux⾥安装了JDK、Tomcat和MySQL,但是⽆法访问Tomcat下webapps中的项⽬,404。

⾸先你要确保环境没有问题,其次就是项⽬代码的问题。

在本机上能运⾏,现在怎会404呢?解决思路:连接数据库的四要素有问题,数据库不在同⼀个地⽅,有可能名字也变了。

还有就是useUnicode=true&characterEncoding=UTF-8,解决中⽂检索不到数据的问题。

仔细阅读前提说明:安装包全部在window环境下载好,必须以.tar.gz结尾,才能在Linux环境使⽤。

使⽤ Xftp 上传到虚拟机上/home/mytest/⽬录下。

JDK的下载、安装下载JDK解压缩 tar.gz⽂件:tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/local/,其中 -C /usr/local 是指定解压后的⽂件存放位置Linux使⽤默认JDK环境,需要在/etc⽬录下的profile⽂件最后加上:export JAVA_HOME=/usr/local/jdk1.8.0_121export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jarprofile⽂件修改成,执⾏ source /etc/profile 让上⾯的配置⽣效执⾏java -version检查是否配置成功Tomcat下载安装tomcat官⽹:国内镜像:解压缩:tar -zxvf apache-tomcat-8.5.16.tar.gz -C /usr/local/启动:在tomcat安装⽬录/bin下执⾏./startup.sh关闭:./shutdown.sh⽇志⽂件:在tomcat安装⽬录/logs下⽣成⽇志⽂件,如果项⽬运⾏出现问题,在这⾥查看⽇志⽂件。

MySQL运维之--日常维护操作

MySQL运维之--日常维护操作

MySQL运维之--⽇常维护操作转载请注明出处:⼀、Linux内核和发⾏版本号uname -acat /etc/issue⼆、glibc的版本号/lib/libc.so.6 ---没有man函数据的动态链接库三、MySQL的版本号MySQL⼆进制分发版的⽂件名称格式为:mysql-VERSION-OS.tar.gz⽐如:Linux-Generic(glibc 2.5) (x86,64bit),Compressed TAR Archive(mysql-5.6.16-linux-glibc2.5-x86_64.tar.gz) 1、下载/downloads/mysql/2、查rpm包装在什么⽂件夹下rpm -qpl MySQL-server-5.6.23-1.el6.i686.rpm |morerpm -qpl MySQL-client-5.6.23-1.el6.x86_64.rpm |more3、更改rpm安装路径rpm --helprpm --prefix --relocaterpmbuild spec binary rpmyum install四、rpm安装rpm -ivh xxx.rmprpm -pql xxx.rmpMySQL 实例安装和启动1. 安装mysql_install_db --defaults-file=/root/data/mysql3306/f --basedir=/usr/ --datadir=/root/data/mysql3306/data 2. 启动mysqld_safe --defaults-file=/root/data/mysql3306/f &3. 登录mysql -h127.0.0.1 -uroot -P3306 -p五、安装演⽰:1.关闭mysqlps -ef |grep mysqldkill 3397 38012.安装cat init3306sh init3306.sh3.启动cat start3306.shsh start3306.sh注意:mysql_install_db(通过安装rpm包产⽣mysql_install_db)。

LINUX下MYSQL配置文件详解

LINUX下MYSQL配置文件详解

linux下mysql配置文件f详解【转】basedir=path使用给定目录作为根目录(安装目录)。

character-sets-dir=path给出存放着字符集的目录。

datadir=path从给定目录读取数据库文件。

pid-file=filename 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统);Init-V脚本需要使用这个文件里的进程ID 结束mysqld进程。

socket=filename 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(仅适用于UNIX/Linux系统;默认设置一般是/var/lib/mysql/mysql.sock文件)。

在Windows环境下,如果MySQL客户与服务器是通过命名管道进行通信的,–sock选项给出的将是该命名管道的名字(默认设置是MySQL)。

lower_case_table_name =1/0新目录和数据表的名字是否只允许使用小写字母;这个选项在Windows环境下的默认设置是1(只允许使用小写字母)。

mysqld程序:语言设置character-sets-server= name 新数据库或数据表的默认字符集。

为了与MySQL的早期版本保持兼容,这个字符集也可以用–default-character-set选项给出;但这个选项已经显得有点过时了。

collation-server=name新数据库或数据表的默认排序方式。

lanuage=name用指定的语言显示出错信息。

mysqld程序:通信、网络、信息安全enable-named-pipes 允许Windows2000/XP环境下的客户和服务器使用命名管道(named pipe)进行通信。

这个命名管道的默认名字是MySQL,但可以用–socket选项来改变。

local-infile[=0]允许/禁止使用LOAD DATA LOCAL语句来处理本地文件。

Mysql启动的方式(四种)

Mysql启动的方式(四种)

Mysql启动的⽅式(四种)废话不多说了,直奔主题了。

mysql的四种启动⽅式:1、mysqld启动mysql服务器:./mysqld --defaults-file=/etc/f --user=root客户端连接:mysql --defaults-file=/etc/formysql -S /tmp/mysql.sock2、mysqld_safe启动mysql服务器:./mysqld_safe --defaults-file=/etc/f --user=root &客户端连接:mysql --defaults-file=/etc/formysql -S /tm/mysql.sock3、mysql.servercp -v /usr/local/mysql/support-files/mysql.server /etc/init.d/chkconfig --add mysql.server启动mysql服务器:service mysql.server {start|stop|restart|reload|force-reload|status}客户端连接:同1、24、mysqld_multimkdir $MYSQL_BASE/data2cat <<-EOF>> /etc/f[mysqld_multi]mysqld = /usr/local/mysql/bin/mysqld_safemysqladmin = /user/local/mysql/bin/mysqladminuser = mysqladminpassword = mysqladmin[mysqld3306]port = 3306socket = /tmp/mysql3306.sockpid-file = /tmp/mysql3306.pidskip-external-lockingkey_buffer_size = 16Mmax_allowed_packet = 1Mtable_open_cache = 64sort_buffer_size = 512Knet_buffer_length = 8Kread_buffer_size = 256Kread_rnd_buffer_size = 512Kmyisam_sort_buffer_size = 8Mbasedir = /usr/local/mysqldatadir = /usr/local/mysql/data[mysqld3307]port = 3307socket = /tmp/mysql3307.sockpid-file = /tmp/mysql3307.pidskip-external-lockingkey_buffer_size = 16Mmax_allowed_packet = 1Mtable_open_cache = 64sort_buffer_size = 512Knet_buffer_length = 8Kread_buffer_size = 256Kread_rnd_buffer_size = 512Kmyisam_sort_buffer_size = 8Mbasedir = /usr/local/mysqldatadir = /usr/local/mysql/data2EOF#mysql -S /tmp/mysql3306.sockmysql>GRANT SHUTDOWN ON *.* TO 'mysqladmin'@'localhost' identified by 'mysqladmin' with grant option; #mysql -S /tmp/mysql3307.sockmysql>GRANT SHUTDOWN ON *.* TO 'mysqladmin'@'localhost' identified by 'mysqladmin' with grant option;启动mysql服务器:./mysqld_multi --defaults-file=/etc/f start 3306-3307关闭mysql服务器:mysqladmin shutdown以上所述是⼩编给⼤家介绍了四种Mysql启动⽅式,希望对⼤家有所帮助!。

(完整版)linux下mysql操作命令

(完整版)linux下mysql操作命令

linux mysql 操作命令1.linux下启动mysql的命令:mysqladmin start/ect/init.d/mysql start (前面为mysql的安装路径)2.linux下重启mysql的命令:mysqladmin restart/ect/init.d/mysql restart (前面为mysql的安装路径)3.linux下关闭mysql的命令:mysqladmin shutdown/ect/init.d/mysql shutdown (前面为mysql的安装路径)4.连接本机上的mysql:进入目录mysql\bin,再键入命令mysql -uroot -p,回车后提示输入密码。

退出mysql命令:exit(回车)5.修改mysql密码:mysqladmin -u用户名-p旧密码password 新密码或进入mysql命令行SET PASSWORD FOR root=PASSWORD("root");6.增加新用户。

(注意:mysql环境中的命令后面都带一个分号作为命令结束符)grant select on 数据库.* to 用户名@登录主机identified by "密码"如增加一个用户test密码为123,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。

首先用以root用户连入mysql,然后键入以下命令:grant select,insert,update,delete on *.* to " Identified by "123";二、有关mysql数据库方面的操作必须首先登录到mysql中,有关操作都是在mysql的提示符下进行,而且每个命令以分号结束1、显示数据库列表。

show databases;2、显示库中的数据表:use mysql;//打开库show tables;3、显示数据表的结构:describe 表名;4、建库:create database 库名;GBK: create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_c hinese_ci;UTF8: CREATE DATABASE `test2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;5、建表:use 库名;create table 表名(字段设定列表);6、删库和删表:drop database 库名;drop table 表名;7、将表中记录清空:delete from 表名;truncate table 表名;8、显示表中的记录:select * from 表名;9、编码的修改如果要改变整个mysql的编码格式:启动mysql的时候,mysqld_safe命令行加入--default-character-set=gbk如果要改变某个库的编码格式:在mysql提示符后输入命令alter database db_name default character set gbk;10.重命名表alter table t1 rename t2;11.查看sql语句的效率explain < table_name >例如:explain select * from t3 where id=3952602;12.用文本方式将数据装入数据库表中(例如D:/mysql.txt)mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE;三、数据的导入导出1、文本数据转到数据库中文本数据应符合的格式:字段数据之间用tab键隔开,null值用来代替。

mysql基础:mysqld_safe启动执行流程详解

mysql基础:mysqld_safe启动执行流程详解

mysql基础:mysqld_safe启动执⾏流程详解1、查找basedir和ledir。

2、查找datadir和f。

3、对f做⼀些检查,具体检查哪些选项请看附件中的注释。

4、解析f中的组[mysqld]和[mysqld_safe]并和终端⾥输⼊的命令合并。

5、调⽤parse_arguments函数解析⽤户传递的所有参数($@)。

6、对系统⽇志和错误⽇志的判断和相应处理具体可以参考附件中的注释,及选项--err-log参数的赋值。

7、对选项--user,--pid-file,--socket及--port进⾏处理及赋值,保证启动时如果不给出这些参数它也会有值。

8、启动mysqld.a)启动时会判断⼀个进程号是否存在,如果存在那么就在错误⽇志中记录"A mysqld process already exists"并且退出。

b)如不存在就删除进程⽂件,如果删除不了,那么就在错误⽇志中记录"Fatal error: Can't remove the pid file"并退出。

9、启动时对表进⾏检查。

如果启动的时候检查表的话设置key_buffer and sort_buffer会提⾼速度并且减少磁盘空间的使⽤。

也可以使⽤myisam-recover选项恢复出错的myisam表。

10、如果启动时你什么参数都没有给,那么它会选⽤⼀些特定的参数启动,具体哪些参数请看附件注释。

11、如果服务器异常关闭,那么会restart。

检查环境检查配置选项启动及启动后的处理1、mysqld_safe增加了⼀些安全特性,例如当出现错误时重启服务器并向错误⽇志⽂件写⼊运⾏时间信息。

2、如果有的选项是mysqld_safe 启动时特有的,那么可以终端指定,如果在配置⽂件中指定需要放在[mysqld_safe]组⾥⾯,放在其他组不能被正确解析。

3、mysqld_safe启动能够指定内核⽂件⼤⼩ ulimit -c $core_file_size以及打开的⽂件的数量ulimit -n $size。

深度解析MySQL启动时报“TheserverquitwithoutupdatingPID。。。

深度解析MySQL启动时报“TheserverquitwithoutupdatingPID。。。

深度解析MySQL启动时报“TheserverquitwithoutupdatingPID。

很多童鞋在启动mysql的时候,碰到过这个错误,⾸先,澄清⼀点,出现这个错误的前提是:通过服务脚本来启动mysql。

通过mysqld_safe或mysqld启动mysql实例并不会报这个错误。

那么,出现这个错误的原因具体是什么呢?哈哈,对分析过程不care的童鞋可直接跳到⽂末的总结部分~下⾯,来分析下mysql的服务启动脚本脚本完整内容如下:#!/bin/sh# Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB# This file is public domain and comes with NO WARRANTY of any kind# MySQL daemon start/stop script.# Usually this is put in /etc/init.d (at least on machines SYSV R4 based# systems) and linked to /etc/rc3.d/S99mysql and /etc/rc0.d/K01mysql.# When this is done the mysql server will be started when the machine is# started and shut down when the systems goes down.# Comments to support chkconfig on RedHat Linux# chkconfig: 23456436# description: A very fast and reliable SQL database engine.# Comments to support LSB init script conventions### BEGIN INIT INFO# Provides: mysql# Required-Start: $local_fs $network $remote_fs# Should-Start: ypbind nscd ldap ntpd xntpd# Required-Stop: $local_fs $network $remote_fs# Default-Start: 2345# Default-Stop: 016# Short-Description: start and stop MySQL# Description: MySQL is a very fast and reliable SQL database engine.### END INIT INFO# If you install MySQL on some other places than /usr/local/mysql, then you# have to do one of the following things for this script to work:## - Run this script from within the MySQL installation directory# - Create a /etc/f file with the following information:# [mysqld]# basedir=<path-to-mysql-installation-directory># - Add the above to any other configuration file (for example ~/.my.ini)# and copy my_print_defaults to /usr/bin# - Add the path to the mysql-installation-directory to the basedir variable# below.## If you want to affect other MySQL variables, you should make your changes# in the /etc/f, ~/f or other MySQL configuration files.# If you change base dir, you must also change datadir. These may get# overwritten by settings in the MySQL configuration files.basedir=datadir=# Default value, in seconds, afterwhich the script should timeout waiting# for server start.# Value here is overriden by value in f.# 0 means don't wait at all# Negative numbers mean to wait indefinitelyservice_startup_timeout=900# Lock directory for RedHat / SuSE.lockdir='/var/lock/subsys'lock_file_path="$lockdir/mysql"# The following variables are only set for letting mysql.server find things.# Set some defaultsmysqld_pid_file_path=if test -z "$basedir"thenbasedir=/usr/local/mysqlbindir=/usr/local/mysql/binif test -z "$datadir"thendatadir=/usr/local/mysql/datafisbindir=/usr/local/mysql/binlibexecdir=/usr/local/mysql/binelsebindir="$basedir/bin"if test -z "$datadir"thendatadir="$basedir/data"fisbindir="$basedir/sbin"libexecdir="$basedir/libexec"fi# datadir_set is used to determine if datadir was set (and so should be# *not* set inside of the --basedir= handler.)datadir_set=## Use LSB init script functions for printing messages, if possible#lsb_functions="/lib/lsb/init-functions"if test -f $lsb_functions ; then. $lsb_functionselselog_success_msg(){echo" SUCCESS! $@"}log_failure_msg(){echo" ERROR! $@"}PATH="/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin"export PATHmode=$1 # start or stop[ $# -ge 1 ] && shiftother_args="$*" # uncommon, but needed when called from an RPM upgrade action# Expected: "--skip-networking --skip-grant-tables"# They are not checked here, intentionally, as it is the resposibility# of the "spec"file author to give correct arguments only.case `echo"testing\c"`,`echo -n testing` in*c*,-n*) echo_n= echo_c= ;;*c*,*) echo_n=-n echo_c= ;;*) echo_n= echo_c='\c' ;;esacparse_server_arguments() {for arg docase"$arg"in--basedir=*) basedir=`echo"$arg" | sed -e 's/^[^=]*=//'`bindir="$basedir/bin"if test -z "$datadir_set"; thendatadir="$basedir/data"fisbindir="$basedir/sbin"libexecdir="$basedir/libexec";;--datadir=*) datadir=`echo"$arg" | sed -e 's/^[^=]*=//'`datadir_set=1;;--pid-file=*) mysqld_pid_file_path=`echo"$arg" | sed -e 's/^[^=]*=//'` ;;--service-startup-timeout=*) service_startup_timeout=`echo"$arg" | sed -e 's/^[^=]*=//'` ;; esacdone}wait_for_pid () {verb="$1" # created | removedpid="$2" # process ID of the program operating on the pid-filepid_file_path="$3" # path to the PID file.i=0avoid_race_condition="by checking again"while test $i -ne $service_startup_timeout ; docase"$verb"in'created')# wait for a PID-file to pop into existence.test -s "$pid_file_path" && i='' && break;;'removed')# wait for this PID-file to disappeartest ! -s "$pid_file_path" && i='' && break;;*)echo"wait_for_pid () usage: wait_for_pid created|removed pid pid_file_path"exit 1;;esac# if server isn't running, then pid-file will never be updatedif test -n "$pid"; thenif kill -0"$pid"2>/dev/null; then: # the server still runselse# The server may have exited between the last pid-file check and now.if test -n "$avoid_race_condition"; thenavoid_race_condition=""continue # Check again.fi# there's nothing that will affect the file.log_failure_msg "The server quit without updating PID file ($pid_file_path)."return 1 # not waiting any more.fifiecho $echo_n ".$echo_c"i=`expr $i + 1`sleep1doneif test -z "$i" ; thenlog_success_msgreturn 0elselog_failure_msgreturn 1fi}# Get arguments from the f file,# the only group, which is read from now on is [mysqld]if test -x ./bin/my_print_defaultsthenprint_defaults="./bin/my_print_defaults"elif test -x $bindir/my_print_defaultsthenprint_defaults="$bindir/my_print_defaults"elif test -x $bindir/mysql_print_defaultsthenprint_defaults="$bindir/mysql_print_defaults"else# Try to find basedir in /etc/fconf=/etc/fprint_defaults=if test -r $confthensubpat='^[^=]*basedir[^=]*=\(.*\)$'dirs=`sed -e "/$subpat/!d" -e 's//\1/' $conf`for d in $dirsdod=`echo $d | sed -e 's/[ ]//g'`if test -x "$d/bin/my_print_defaults"thenprint_defaults="$d/bin/my_print_defaults"fiif test -x "$d/bin/mysql_print_defaults"thenprint_defaults="$d/bin/mysql_print_defaults"breakfidonefi# Hope it's in the PATH ... but I doubt ittest -z "$print_defaults" && print_defaults="my_print_defaults"fi## Read defaults file from 'basedir'. If there is no defaults file there# check if it's in the old (depricated) place (datadir) and read it from there#extra_args=""if test -r "$basedir/f"thenextra_args="-e $basedir/f"elseif test -r "$datadir/f"thenextra_args="-e $datadir/f"fifiparse_server_arguments `$print_defaults $extra_args mysqld server mysql_server mysql.server`## Set pid file if not given#if test -z "$mysqld_pid_file_path"thenmysqld_pid_file_path=$datadir/`hostname`.pidelsecase"$mysqld_pid_file_path"in/* ) ;;* ) mysqld_pid_file_path="$datadir/$mysqld_pid_file_path" ;;esacficase "$mode" in'start')# Start daemon# Safeguard (relative paths, core dumps..)cd $basedirecho $echo_n "Starting MySQL"if test -x $bindir/mysqld_safethen# Give extra arguments to mysqld with the f file. This script# may be overwritten at next upgrade.$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null 2>&1 & wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?# Make lock for RedHat / SuSEif test -w "$lockdir"thentouch "$lock_file_path"fiexit $return_valueelselog_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)"fi;;'stop')# Stop daemon. We use a signal here to avoid having to know the# root password.if test -s "$mysqld_pid_file_path"thenmysqld_pid=`cat "$mysqld_pid_file_path"`if (kill -0 $mysqld_pid 2>/dev/null)thenecho $echo_n "Shutting down MySQL"kill $mysqld_pid# mysqld should remove the pid file when it exits, so wait for it.wait_for_pid removed "$mysqld_pid" "$mysqld_pid_file_path"; return_value=$?elselog_failure_msg "MySQL server process #$mysqld_pid is not running!"rm "$mysqld_pid_file_path"fi# Delete lock for RedHat / SuSEif test -f "$lock_file_path"thenrm -f "$lock_file_path"fiexit $return_valueelselog_failure_msg "MySQL server PID file could not be found!"fi;;'restart')# Stop the service and regardless of whether it was# running or not, start it again.if $0 stop $other_args; then$0 start $other_argselselog_failure_msg "Failed to stop running server, so refusing to try to start."exit 1fi;;'reload'|'force-reload')if test -s "$mysqld_pid_file_path" ; thenread mysqld_pid < "$mysqld_pid_file_path"kill -HUP $mysqld_pid && log_success_msg "Reloading service MySQL"touch "$mysqld_pid_file_path"elselog_failure_msg "MySQL PID file could not be found!"exit 1fi;;# First, check to see if pid file existsif test -s "$mysqld_pid_file_path" ; thenread mysqld_pid < "$mysqld_pid_file_path"if kill -0 $mysqld_pid 2>/dev/null ; thenlog_success_msg "MySQL running ($mysqld_pid)"exit 0elselog_failure_msg "MySQL is not running, but PID file exists"exit 1fielse# Try to find appropriate mysqld processmysqld_pid=`pidof $libexecdir/mysqld`# test if multiple pids existpid_count=`echo $mysqld_pid | wc -w`if test $pid_count -gt 1 ; thenlog_failure_msg "Multiple MySQL running but PID file could not be found ($mysqld_pid)"exit 5elif test -z $mysqld_pid ; thenif test -f "$lock_file_path" ; thenlog_failure_msg "MySQL is not running, but lock file ($lock_file_path) exists"exit 2filog_failure_msg "MySQL is not running"exit 3elselog_failure_msg "MySQL is running but PID file could not be found"exit 4fifi;;*)# usagebasename=`basename "$0"`echo "Usage: $basename {start|stop|restart|reload|force-reload|status} [ MySQL server options ]"exit 1;;esacexit 0View Code⾸先,定义相关参数basedir=datadir=# Default value, in seconds, afterwhich the script should timeout waiting# for server start.# Value here is overriden by value in f.# 0 means don't wait at all# Negative numbers mean to wait indefinitelyservice_startup_timeout=900# Lock directory for RedHat / SuSE.lockdir='/var/lock/subsys'lock_file_path="$lockdir/mysql"其中,basedir 指的⼆进制压缩包解压后所在的⽬录,譬如/usr/local/mysql。

电大数据库运维作业一

电大数据库运维作业一

电大数据库运维作业一数据库运维作业一一、单项选择题(每题2分,共60分)1. 数据库系统的核心是()。

A. 数据库B.数据库管理员C.数据库管理系统D.计算机软硬件系统2. 数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)三者之间的关系是()。

A. DBS 包括 DB 和 DBMSB. DBMS 包括 DB 和 DBSC. DB包括DBS和DBMSD. DBS包括DB,也就是DBMS3. 在文件管理方式中,数据处于一种()的状态。

A.集中B.集体化C.分散D.链接4. 以下不属于数据库特点的是()。

A. 数据共享B.数据冗余度高C.数据集中控制D.数据独立性高5. 对数据库特征的描述不准确的是()。

A. 数据具有独立性B.数据结构化C.数据集中控制D,数据没有冗余6. mysqladmin command参数中删除一个库的参数是()。

A. delete [DB_NAME]B. drop [DB_NAME]C. drop database [ DB_NAME ]D. delete database [ DB_NAME ]7. MySQL二进制日志binlog的作用是记录MySQL内部()的内容。

A.增删改B.查询 selectC.显ZK showD.异常 exception8. mysqlbinlog中使用参数()可以打开指定库的binlog文件。

A, —d B. —r C. —h D. —u9. MySQL数据库中使用命令行工具()可以有效地对记录进行归档。

A. mysqldumpB. mysqladminC. mysqlbinlogD. percona toolkit10. 在MySQL可视化管理工具MySQL GUI Tools中,方便数据库迁移的图形化应用程序是()。

A. MySQL AdministratorB. MySQL Migration ToolkitC. MySQL Query BrowserD. MySQL Workbench11. MySQL使用的默认端口是()。

mysql启动时报错:StartingMySQL...ERROR!Theserverqui。。。

mysql启动时报错:StartingMySQL...ERROR!Theserverqui。。。

mysql启动时报错:StartingMySQL...ERROR!Theserverqui。

出现问题的可能性1、可能是/opt/mysql/data/数据⽬录mysql⽤户没有权限(修改数据⽬录的权限)解决⽅法:给予权限,执⾏ "chown -R mysql.mysql /opt/mysql/data" 然后重新启动mysqld2、可能进程⾥已经存在mysql进程解决⽅法:⽤命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使⽤“kill -9 进程号”杀死,然后重新启动mysqld!3、可能是第⼆次在机器上安装mysql,有残余数据影响了服务的启动。

解决⽅法:去mysql的⼆进制⽇志⽬录看看,如果存在mysql-binlog.index,就赶快把它删除掉吧4、mysql在启动时没有指定配置⽂件时会使⽤/etc/f配置⽂件,请打开这个⽂件查看在[mysqld]下有没有指定数据⽬录(datadir)。

解决⽅法:请在[mysqld]下设置这⼀⾏:datadir = /opt/mysql/data5、skip-federated字段问题解决⽅法:检查⼀下/etc/f⽂件中有没有没被注释掉的skip-federated字段,如果有就⽴即注释掉吧。

6、错误⽇志⽬录不存在解决⽅法:使⽤“chown” “chmod”命令赋予mysql所有者及权限7、selinux惹的祸,如果是centos系统,默认会开启selinux1 2解决⽅法:先临时改为警告模式:[root@www php]# setenforce 0然后打开/etc/sysconfig/selinux,把SELINUX=enforcing改为SELINUX=disabled8、启动失败注意检查数据⽬录的权限,要与mysql程序运⾏⽤户权限⼀致。

1[root@db01 mysql]# chown -R mysql.mysql ../mysql 最好是整个mysql程序⽬录都授权予mysql⽤户。

MySQL数据库崩溃修复案例,再也无需删库跑路!

MySQL数据库崩溃修复案例,再也无需删库跑路!

MySQL数据库崩溃修复案例,再也⽆需删库跑路!前⾔互联⽹⾏业是个⾼危⾏业,动不动就删库跑路!⼏天前⼀朋友在测试服务器上执⾏⼀条错误的命令,导致MySQL数据库崩溃,纠结了好⼏天也没解决问题。

深⼊研究MySQL源码!从根源上找出了MySQL崩溃原因。

问题描述研究MySQL源代码,调试并压测MySQL源代码时,MySQL崩溃!问题是崩溃!⽽且还损坏了InnoDB⽂件!还好是在调试环境下发⽣的,赶紧看看如何解决这个问题,经过⼀系列的查阅资料、验证、对⽐、MySQL源码调试跟踪、修复损坏的InnoDB⽂件、总结等流程,整理成此⽂,如果以后真的发⽣在线上的⽣产坏境,也不⽤担⼼是不是要跑路的问题,可以分分钟搞定MySQL的崩溃问题!查看错误⽇志,如下:-----------------------------------------161108 23:36:45 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var2020-05-01 23:36:46 0[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).2020-05-01 23:36:46 5497[Note] Plugin 'FEDERATED' is disabled.2020-05-01 23:36:467f11c48e1720 InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may beremoved in future releases, together with the option innodb_use_sys_malloc and with the InnoDB'sinternal memory allocator.2020-05-01 23:36:46 5497[Note] InnoDB: Using atomics to ref count buffer pool pages2020-05-01 23:36:46 5497[Note] InnoDB: The InnoDB memory heap is disabled2020-05-01 23:36:46 5497[Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins2020-05-01 23:36:46 5497[Note] InnoDB: Memory barrier is not used2020-05-01 23:36:46 5497[Note] InnoDB: Compressed tables use zlib 1.2.32020-05-01 23:36:46 5497[Note] InnoDB: Using CPU crc32 instructions2020-05-01 23:36:46 5497[Note] InnoDB: Initializing buffer pool, size = 16.0M2020-05-01 23:36:46 5497[Note] InnoDB: Completed initialization of buffer poolInnoDB: Database page corruption on disk or a failedInnoDB:file read of page 5.InnoDB: You may have to recover from a backup.2020-05-01 23:36:46 7f11c48e1720InnoDB: Page dump in ascii and hex (16384 bytes): len 16384; hex7478d078000000050000000000000000000000000f271f4d000700000000000000000000000000000000001b4000000000000000000200f20000000000000006000000000000002d000000000000002e000000000000002f0000000000000030000000000(省略很多类似代码)InnoDB: End of page dump2020-05-01 23:36:46 7f11c48e1720 InnoDB: uncompressed page,stored checksum in field1 1954074744, calculated checksums for field1: crc32 993334256, innodb2046145943, none 3735928559, stored checksum in field2 1139795846, calculated checksums for field2:crc32 993334256, innodb 1606613742, none 3735928559, page LSN 0 254222157, low 4 bytes of LSN at page end 254221236, page number (if stored to page already) 5,space id (if created with >= MySQL-4.1.1and stored already) 0InnoDB: Page may be a transaction system pageInnoDB: Database page corruption on disk or a failedInnoDB: file read of page 5.InnoDB: You may haveto recover from a backup.InnoDB: Itis also possible that your operatingInnoDB: system has corrupted its own file cacheInnoDB: andrebooting your computer removes theInnoDB: error.InnoDB: If the corrupt page is an index pageInnoDB:you can also try to fix the corruptionInnoDB: by dumping, dropping, and reimportingInnoDB: thecorrupt table. You can use CHECKInnoDB: TABLE to scan your table for corruption.InnoDB: See also/doc/refman/5.6/en/forcing-innodb-recovery.htmlInnoDB: about forcingrecovery.InnoDB: Ending processing because of a corrupt database page.2020-05-01 23:36:467f11c48e1720 InnoDB: Assertion failure in thread 139714288817952 in file line 4201InnoDB: We intentionally generate a memory trap.InnoDB: Submit a detailedbug report to.InnoDB: If you get repeated assertion failures or crashes, evenInnoDB:immediately after the mysqld startup, there may beInnoDB: corruption in the InnoDB tablespace. Please refer toInnoDB: /doc/refman/5.6/en/forcing-innodb-recovery.htmlInnoDB: aboutforcing recovery.03:36:46 UTC - mysqld got signal 6 ;This could be because you hit a bug. It is also possible that this binaryor one of the libraries it was linked against is corrupt,improperlybuilt,or misconfigured. This error can also be caused by malfunctioning hardware.We will try our bestto scrape up some info that will hopefully helpdiagnose the problem, but since we have alreadycrashed,something is definitely wrong and this mayfail.key_buffer_size=16777216read_buffer_size=262144max_used_connections=0max_threads=1000thread_count=0connection_count=0It is possible that mysqld could use up tokey_buffer_size + (read_buffer_size +sort_buffer_size)*max_threads = 798063 K bytes of memoryHope that's ok; if not, decrease somevariables in the equation.Thread pointer: 0x0Attempting backtrace. You can use the followinginformation to find outwhere mysqld died. If you see no messages after this, something wentterriblywrong...stack_bottom = 0 thread_stack 0x40000/usr/local/mysql/bin/mysqld(my_print_stacktrace+0x35)[0x8e64b5]/usr/local/mysql/bin/mysqld(handle_fatal_signal+0x41b)[0x652fbb]/lib64/libpthread.so.0(+0xf7e0)[0x7f11c44c77e0]/lib64/libc.so.6(gsignal+0x35)[0x7f11c315d625]/lib64/libc.so.6(abort+0x175)[0x7f11c315ee05]/usr/local/mysql/bin/mysqld[0xa585c5]/usr/local/mysql/bin/mysqld[0xa6c7b4]/usr/local/mysql/bin/mysqld[0xa6cbc7]/usr/local/mysql/bin/mysqld[0xa5bce2]/usr/local/mysql/bin/mysqld[0xa1e2ba]/usr/local/mysql/bin/mysqld[0xa0bf60]/usr/local/mysql/bin/mysqld[0x95a427]/usr/local/mysql/bin/ [0x58f788]/usr/local/mysql/bin/mysqld[0x6e4a36]/usr/local/mysql/bin/mysqld(_Z11plugin_initPiPPci+0xb3e)[0x6e826e]/usr/local/mysql/bin/mysqld[0x582d85]/usr/local/mysql/bin/mysqld(_Z11mysqld_mainiPPc+0x4d8)[0x587d18]/lib64/libc.so.6(__libc_start_main+0xfd)[0x7f11c3149d5d]/usr/local/mysql/bin/mysqld[0x57a019]The manual page at/doc/mysql/en/crashing.html containsinformation that should help you find outwhat is causing the crash.161108 23:36:46 mysqld_safe mysqld from pid file/usr/local/mysql/var/VM_241_49_centos.pidended------------------------------------------------------------------------------问题分析从⽇志中可以看出是InnoDB引擎出了问题。

mysql安全启动脚本mysqld_safe详细介绍

mysql安全启动脚本mysqld_safe详细介绍

mysql安全启动脚本mysqld_safe详细介绍在Unix和NetWare中推荐使⽤mysqld_safe来启动mysqld服务器。

mysqld_safe增加了⼀些安全特性,例如当出现错误时重启服务器并向错误⽇志⽂件写⼊运⾏时间信息。

本节后⾯列出了NetWare的特定⾏为。

注释:为了保持同旧版本MySQL的向后兼容性,MySQL⼆进制分发版仍然包括safe_mysqld作为mysqld_safe的符号链接。

但是,你不应再依赖它,因为再将来将删掉它。

默认情况下,mysqld_safe尝试启动可执⾏mysqld-max(如果存在),否则启动mysqld。

该⾏为的含义是: · 在Linux中,MySQL-Max RPM依赖该mysqld_safe的⾏为。

RPM安装可执⾏mysqld-max,使mysqld_safe从该点起⾃动使⽤可执⾏命令。

· 如果你安装包括mysqld-max服务器的MySQL-Max分发版,后⾯升级到⾮-Max的MySQL版本,mysqld_safe仍然试图运⾏旧的 mysqld-max服务器。

升级时,你应⼿动删除旧的mysqld-max服务器以确保mysqld_safe运⾏新的mysqld服务器。

要想越过默认⾏为并显式指定你想要运⾏哪个服务器,为mysqld_safe指定--mysqld或--mysqld-version选项。

mysqld_safe从选项⽂件的[mysqld]、[server]和 [mysqld_safe]部分读取所有选项。

为了保证向后兼容性,它还读取[safe_mysqld]部分,尽管在MySQL 5.1安装中你应将这部分重新命名为[mysqld_safe]。

mysqld_safe⽀持下⾯的选项: · --help 显⽰帮助消息并退出。

· --autoclose (只在NetWare中)在NetWare中,mysqld_safe可以保持窗⼝。

mysql忘记密码和删除root用户

mysql忘记密码和删除root用户

一、手动修改1、停止MySQL服务执行:/etc/init.d/mysql stop,你的机器上也不一定/etc/init.d/mysql也可能是/etc/init.d/mysqld 2、跳过验证启动MySQL/usr/local/mysql/bin/mysqld_safe --skip-grant-tables >/dev/null 2>&1 &注:如果mysqld_safe的位置如果和上面不一样需要修改成你的,如果不清楚可以用find命令查找。

3、重置密码等一会儿,然后执行:/usr/local/mysql/bin/mysql -u root mysql出现mysql提示符后输入:update user set password = Password('要设置的密码') where User = 'root';回车后执行:flush privileges;(重要) 刷新MySQL系统权限相关的表。

再执行:exit; 退出。

4、重启MySQL杀死MySQL进程:killallmysqld重启MySQL:/etc/init.d/mysql start二、如果是误删了root用户,则使用下面的语句创建root用户:insert into user setHost='localhost',User='root',Password=Password('111111'),select_priv='y',insert_priv='y',update_priv='y',Alter_priv='y',delete_priv='y',create_priv='y',drop_priv='y',reload_priv='y',shutdown_priv ='y',Process_priv='y',file_priv='y',grant_priv='y',References_priv='y',index_priv='y',creat e_user_priv='y',show_db_priv='y',super_priv='y',create_tmp_table_priv='y',Lock_tables_ priv='y',execute_priv='y',repl_slave_priv='y',repl_client_priv='y',create_view_priv='y',sho w_view_priv='y',create_routine_priv='y',alter_routine_priv='y',event_priv='y',trigger_priv ='y';三、如果是忘记了root用户的密码,则使用下面的语句修改root密码:update user set Password=Password('111111') where User='root';。

MySql登陆密码忘记及忘记密码的解决方案

MySql登陆密码忘记及忘记密码的解决方案

MySql登陆密码忘记及忘记密码的解决⽅案⽅法⼀:MySQL提供跳过访问控制的命令⾏参数,通过在命令⾏以此命令启动MySQL服务器:safe_mysqld --skip-grant-tables&即可跳过MySQL的访问控制,任何⼈都可以在控制台以管理员的⾝份进⼊MySQL数据库。

需要注意的是在修改完密码以后要把MySQL服务器停掉重新启动才会⽣效⽅法⼆:可以进⾏如下的步骤重新设置MySQL的root密码:1.⾸先确认服务器出于安全的状态,也就是没有⼈能够任意地连接MySQL数据库。

因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的状态下,其他的⽤户也可以任意地登录和修改MySQL的信息。

可以采⽤将MySQL对外的端⼝封闭,并且停⽌Apache以及所有的⽤户进程的⽅法实现服务器的准安全状态。

最安全的状态是到服务器的Console上⾯操作,并且拔掉⽹线。

2.修改MySQL的登录设置:# vi /etc/f在[mysqld]的段中加上⼀句:skip-grant-tables例如:[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockskip-name-resolveskip-grant-tables保存并且退出vi。

3.重新启动mysqld# /etc/init.d/mysqld restartStopping MySQL: [ OK ]Starting MySQL: [ OK ]4.登录并修改MySQL的root密码# /usr/bin/mysqlWelcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 3 to server version: 3.23.56Type ‘help;' or ‘\h' for help. Type ‘\c' to clear the buffer.mysql> USE mysql ;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> UPDATE user SET Password = password ( ‘new-password' ) WHERE User = ‘root' ; Query OK, 0 rows affected (0.00 sec)Rows matched: 2 Changed: 0 Warnings: 0mysql> flush privileges ;Query OK, 0 rows affected (0.01 sec)mysql> quitBye5.将MySQL的登录设置修改回来# vi /etc/f将刚才在[mysqld]的段中加上的skip-grant-tables删除保存并且退出vi。

Linuxcentos7环境下MySQL安装教程

Linuxcentos7环境下MySQL安装教程

Linux centos7环境下MySQL安装教程MySQL所使用的SQL 语言是用于访问数据库的最常用标准化语言。

那么你知道Linux centos7环境下MySQL安装教程么?接下来是小编为大家收集的Linux centos7环境下MySQL安装教程,欢迎大家阅读:Linux centos7环境下MySQL安装教程1)、my.ini 保存到/etc/my.ini2)、用户权限,单独用户执行一、查找以前是否安装有mysql,使用下面命令:rpm –qa | grep -i mysql如果显示有如下包则说明已安装mysqlmysql-4.1.12-3.RHEL4.1mysqlclient10-3.23.58-4.RHEL4.1二、下载mysql解压包mysql-5.7.17-linux-glibc2.5-x86_64.tar (去网站上下载)网址:/mysql/MySQL-5.7/也可以在Linux操作系统底下进行下载,输入如下命令wget /mysql/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz创建目录software用于存放我们待会要下载的mysql包,先去到该目录输入命令:cd /software下载完成后,你会在software目录下看到多出一份mysql安装包文件三、建立用户,以及mysql的目录1、groupadd mysql #建立一个mysql的组2、useradd -r -g mysqlmysql #建立mysql用户,并且把用户放到mysql组3、passwd mysql #给mysql用户设置一个密码四、解压mysql安装包1、先把tar.gz包移动到/usr/local 目录下,输入命令mv /software/MySQL/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz/usr/local2、解压tar.gz包先去到/usr/local 目录下,输入命令cd /usr/local解压命令 tarzxvfmysql-5.7.17-linux-glibc2.5-x86_64.tar.gz输入查看目录命令 ll会发现多出目录 mysql-5.7.17-linux-glibc2.5-x86_64注意:没有data 目录,my.ini文件在support-files 目录下3、改一下目录名字为 /usr/local/mysql(这是linux下mysql的默认安装安装目录)把解压出来的文件改下名字,改为mysql输入命令: mv mysql-5.7.17-linux-glibc2.5-x86_64 mysql五、配置相关的启动配置文件首先要去到support-files/文件目录下输入命令: cd support-files/1、复制f 到 /etc/f (mysql启动时自动读取)输入命令 f /etc/f2、解决乱码问题输入命令:vi /etc/f (进入可编辑状态)更改:[mysql]default-character-set=utf8(表示解决客户端乱码问题)[mysqld]default-storage-engine=INNODBcharacter_set_server=utf8(表示解决服务端乱码问题)3、复制mysql.server 到/etc/init.d/ 目录下【目的想实现mysqld -install这样开机自动执行效果】输入命令 cp mysql.server /etc/init.d/mysql (mysql是服务名)注意:/etc/init.d/ 目录,等效于注册表HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services记录有那些服务4、修改/etc/init.d/mysql 参数输入命令 vi /etc/init.d/mysql给与两个目录位置basedir=/usr/local/mysqldatadir=/usr/local/mysql/data5、给目录/usr/local/mysql 更改拥有者输入命令 chown -R mysql:mysql /usr/local/mysql/六、初始化mysql的数据库1、初始化mysqlmysql_install_db (老版本的做法)新版本:初始化输入命令./mysqld --initialize --user=mysql--basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 生成出一个data目录,代表数据库已经初始化成功并且mysql的root用户生成一个临时密码:(记录下临时密码XXX)2、给数据库加密输入命令./mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data3、启动mysql输入命令 ./mysqld_safe --user=mysql & (&符表示提交到后台运行mysql服务)七、进入客户端1、登录输入命令 ./mysql -uroot -p然后再输入你的临时密码2、修改密码输入命令set password=password(‘xxxx')八、window远程访问Linux虚拟机的mysql先来看看数据库结构1、关闭防火墙 (或者给防火墙开放端口),这样window才能连接上输入命令 systemctl stop firewalld.service2、给Windows授权输入命令mysql>grant all privileges on *.* toroot@'%' identified by '123456';mysql>use mysql;mysql>select host,user from user;【多出一条远程登录用户记录】mysql>flush privileges;3、远程链接数据库,或者重启(init 6)。

mysql几种启动和关闭mysql服务的方法和区别

mysql几种启动和关闭mysql服务的方法和区别

mysql⼏种启动和关闭mysql服务的⽅法和区别mysql⼏种启动⽅法⽅法1、mysqldmysqld指定读取f配置⽂件启动,加⼀个 & 实现后台启动。

终端不会被阻塞./mysqld --defaults-file=/etc/f &⽅法2、mysqld_safe./mysqld_safe –defaults-file=/etc/f &⽅法3、mysql.server将support-files/mysql.server 脚本做成⼀个linux服务。

使⽤服务的⽅式启动cp -v /usr/local/mysql/support-files/mysql.server /etc/init.d/chkconfig –add mysql.serverservice mysql.server {start|stop|restart|reload|force-reload|status}⽅法4、./etc/init.d/mysqld start这种⽅式其实和support-files⼀样。

不过更清晰点,我⽐较喜欢⽤这个。

⽅法5、mysqld_multimysqld_multi 主要⽤来多实例启动的。

见mysqld和mysqld_safe启动有什么区别?1、使⽤file命令分别查看mysqld和mysqld_safe两个执⾏⽂件。

可见mysqld是⼀个64位的 dynamically linked ;mysqld_safe 是⼀个shell script;shell脚本。

可以直接编辑的。

[root@localhost bin]# file mysqldmysqld: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, BuildID[sha1]=e1d1f6fd34afae9ac33181c12d605976c81cc6e1, not stripped[root@localhost bin]# file mysqld_safemysqld_safe: POSIX shell script, ASCII text executable2、使⽤ps-ef查看下⼆者区别mysqld[root@localhost bin]# ps -ef |grep mysqlmysql 929483641211:12 pts/200:00:00 ./mysqld --defaults-file=/etc/fmysqld_safe[root@localhost ~]# ps -ef |grep mysqlroot 93998364011:13 pts/200:00:00/bin/sh ./mysqld_safe --defaults-file=/etc/fmysql 95559399211:13 pts/200:00:00/home/mysql5.7/mysql-5.7.33-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/etc/f --basedir=/home/mysql5.7/mysql-5.7.33-linux-glibc2.12-x86_64 --datadir=/mdata/mysql57 --plugin-dir=/ho mysqld_safe命令启动的⽅式要⽐mysqld启动多了⼀个mysqld_safe的进程;mysqld_safe 其实就是mysqld服务的⼀个守护进程;它的作⽤是当mysql宕机后会⾃动重启mysqld服务。

mysql命令行参数以及参数解析

mysql命令行参数以及参数解析

mysql命令⾏参数以及参数解析友情链接1:友情链接2:mysql命令⾏参数Usage: mysql [OPTIONS] [database] //命令⽅式-?, --help //显⽰帮助信息并退出-I, --help //显⽰帮助信息并退出--auto-rehash //⾃动补全功能,就像linux⾥⾯,按Tab键出提⽰差不多,下⾯有例⼦-A, --no-auto-rehash //默认状态是没有⾃动补全功能的。

-A就是不要⾃动补全功能-B, --batch //ysql不使⽤历史⽂件,禁⽤交互(Enables --silent)--character-sets-dir=name //字体集的安装⽬录--default-character-set=name //设置数据库的默认字符集-C, --compress //在客户端和服务器端传递信息时使⽤压缩-#, --debug[=#] //bug调⽤功能-D, --database=name //使⽤哪个数据库--delimiter=name //mysql默认命令结束符是分号,下⾯有例⼦-e, --execute=name //执⾏mysql的sql语句-E, --vertical //垂直打印查询输出-f, --force //如果有错误跳过去,继续执⾏下⾯的-G, --named-commands/*Enable named commands. Named commands mean this program'sinternal commands; see mysql> help . When enabled, thenamed commands can be used from any line of the query,otherwise only from the first line, before an enter.Disable with --disable-named-commands. This option isdisabled by default.*/-g, --no-named-commands/*Named commands are disabled. Use \* form only, or usenamed commands only in the beginning of a line endingwith a semicolon (;) Since version 10.9 the client nowstarts with this option ENABLED by default! Disable with'-G'. Long format commands still work from the firstline. WARNING: option deprecated; use--disable-named-commands instead.*/-i, --ignore-spaces //忽视函数名后⾯的空格.--local-infile //启动/禁⽤ LOAD DATA LOCAL INFILE.-b, --no-beep //sql错误时,禁⽌嘟的⼀声-h, --host=name //设置连接的服务器名或者Ip-H, --html //以html的⽅式输出-X, --xml //以xml的⽅式输出--line-numbers //显⽰错误的⾏号-L, --skip-line-numbers //忽略错误的⾏号-n, --unbuffered //每执⾏⼀次sql后,刷新缓存--column-names //查寻时显⽰列信息,默认是加上的-N, --skip-column-names //不显⽰列信息-O, --set-variable=name //设置变量⽤法是--set-variable=var_name=var_value--sigint-ignore //忽视SIGINT符号(登录退出时Control-C的结果)-o, --one-database //忽视除了为命令⾏中命名的默认数据库的语句。

使用mysqld_safe启动mysqld服务

使用mysqld_safe启动mysqld服务

使⽤mysqld_safe启动mysqld服务⽬录mysqld_safe 介绍is the recommended way to start a server on Unix. adds some safety features such as restarting the server when an error occurs and logging runtime information to an error log.在 Unix 机器上,MySQL 官⽅推荐使⽤mysqld_safe启动mysqld服务。

mysqld_safe增加了⼀些安全特性,⽐如它会在遇到错误时重启mysqld 服务,并把运⾏时信息记录到 error log 中。

启动下述是以 CentOS 为例,使⽤mysqls_safe启动mysqld服务的命令。

mysqld_safe --defaults-file=f > mysqld.log 2>&1 &其中--defaults-file=f指定了默认的配置⽂件为当前⽬录下的f,我在⾥⾯指定了端⼝为 3306。

> mysqld_log指定了将标准输出重定向到msyqld.log,2>&1表⽰将标准错误输出重定向到标准输出,末尾的&表⽰后台运⾏。

因此,执⾏上述命令,我们使⽤mysqld_safe和f 中的配置启动了⼀个mysqld进程,它始终在后台运⾏,所有的输出(包括错误输出)都将汇集到mysqld.log⽂件中。

按下回车执⾏命令后,终端将返回这个任务的编号和进程号,如果后续想要再次查看,可以通过jobs -l命令来查看当前 Shell 环境中所有的任务。

[root@centos conf]# mysqld_safe --defaults-file=f > mysqld.log 2>&1 &[1] 37225[root@centos conf]# jobs -l[1]+ 37225 Running mysqld_safe --defaults-file=f > mysqld.log 2>&1 &其中[1]代表任务号,+代表这是最近⼀个任务,37225代表进程号 PID,剩下的代表启动任务的命令。

linux后台日志mysql错误异常的解释(推荐)

linux后台日志mysql错误异常的解释(推荐)

linux后台⽇志mysql错误异常的解释(推荐)1、Caused by: municationsException:The last packet successfully received from the server was 56,201,339 milliseconds ago. The last packet sent successfully to the server was 56,201,339 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.at sun.reflect.GeneratedConstructorAccessor257.newInstance(Unknown Source)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at ng.reflect.Constructor.newInstance(Constructor.java:534)at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3291)at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1938)at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2107)at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2648)at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2086)at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2237)at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)at org.hibernate.loader.Loader.doQuery(Loader.java:674)at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)at org.hibernate.loader.Loader.doList(Loader.java:2213)... 45 more解释:最后从服务器接收到数据包成功是56201339毫秒。

MySQL下常见的启动失败与备份失败问题的解决教程

MySQL下常见的启动失败与备份失败问题的解决教程

MySQL下常见的启动失败与备份失败问题的解决教程启动失败重启服务器后-->重启应⽤服务(Confluence)-->报错,数据库连接失败(mysql设置了开机⾃启动)-->查看mysql数据库状态:[root@fisheye ~]# ps -ef | grep mysqlroot 25555 21974 0 11:28 pts/0 00:00:00 grep mysql启动mysql服务器[root@fisheye data]# service mysql startMySQL server PID file could not be found![失败]Starting MySQL.............. ERROR! The server quit without updating PID file (/mydata/data/fisheye..pid).[失败]查看错误⽇志:[root@fisheye data]# tail -100 fisheye.errInnoDB: Last MySQL binlog file position 0 337403929, file name ./mysql-bin.000016141013 1:13:28 InnoDB: Waiting for the background threads to start141013 1:13:29 InnoDB: 5.5.33 started; log sequence number 100664715217:13:29 UTC - mysqld got signal 11 ;This could be because you hit a bug. It is also possible that this binaryor one of the libraries it was linked against is corrupt, improperly built,or misconfigured. This error can also be caused by malfunctioning hardware.We will try our best to scrape up some info that will hopefully helpdi141013 01:13:29 mysqld_safe mysqld from pid file /mydata/data/fisheye.pid ended未发现明显性错误提⽰,所以⼿动创建⼀个pid⽂件试试[root@fisheye data]# touch /mydata/data/fisheye.pi再进⾏重启服务:[root@fisheye data]# service mysql restartERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)突然想到之前看过此类报错的⽂章,记得有可能是磁盘空间不⾜导致的mysql⽆法启动。

CentOS7下mysqld服务启动失败终极解决方案

CentOS7下mysqld服务启动失败终极解决方案

CentOS7下mysqld服务启动失败终极解决⽅案启动mysqld服务失败,报错如下:[root@LCM01GCM01 ~]# service mysqld startStarting mysqld (via systemctl): Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe"for details. [FAILED]既然有了提⽰,先看下有什么帮助没有[root@LCM01GCM01 ~]# systemctl status mysqld.serviceLoaded: loaded (/etc/rc.d/init.d/mysqld)Active: failed (Result: exit-code) since Wed 2016-01-2018:26:57 CST; 40s agoDocs: man:systemd-sysv-generator(8)Process: 2979 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=1/FAILURE)Jan 2018:26:56 spark01 systemd[1]: Starting SYSV: MySQL database server....Jan 2018:26:57 spark01 mysqld[2979]: MySQL Daemon failed to start.Jan 2018:26:57 spark01 mysqld[2979]: Starting mysqld: [FAILED]Jan 2018:26:57 spark01 systemd[1]: mysqld.service: control process exited, code=exited status=1Jan 2018:26:57 spark01 systemd[1]: Failed to start SYSV: MySQL database server..Jan 2018:26:57 spark01 systemd[1]: Unit mysqld.service entered failed state.Jan 2018:26:57 spark01 systemd[1]: mysqld.service failed.[root@LCM01GCM01 ~]# journalctl -xe---- Unit session-2.scope has begun starting up.Jan 2018:26:48 spark01 sshd[2916]: pam_unix(sshd:session): session opened for user spark by (uid=0)Jan 2018:26:52 spark01 su[2944]: (to root) spark on pts/1Jan 2018:26:52 spark01 su[2944]: pam_unix(su-l:session): session opened for user root by spark(uid=1000)Jan 2018:26:56 spark01 polkitd[909]: Registered Authentication Agent for unix-process:2974:117137 (system bus name :1.25Jan 2018:26:56 spark01 systemd[1]: Starting SYSV: MySQL database server....-- Subject: Unit mysqld.service has begun start-up-- Defined-By: systemd-- Support: /mailman/listinfo/systemd-devel---- Unit mysqld.service has begun starting up.Jan 2018:26:57 spark01 mysqld[2979]: MySQL Daemon failed to start.Jan 2018:26:57 spark01 mysqld[2979]: Starting mysqld: [FAILED]Jan 2018:26:57 spark01 systemd[1]: mysqld.service: control process exited, code=exited status=1Jan 2018:26:57 spark01 systemd[1]: Failed to start SYSV: MySQL database server..-- Subject: Unit mysqld.service has failed-- Defined-By: systemd-- Support: /mailman/listinfo/systemd-devel---- Unit mysqld.service has failed.---- The result is failed.Jan 2018:26:57 spark01 systemd[1]: Unit mysqld.service entered failed state.Jan 2018:26:57 spark01 systemd[1]: mysqld.service failed.Jan 2018:26:57 spark01 polkitd[909]: Unregistered Authentication Agent for unix-process:2974:117137 (system bus name :1.然⽽,好像这些信息对我们来说并没有什么⽤处,什么守护进程没启动,我们也不能知如何去启动这些,这个时候我们查看⼀下mysql⾃带的告警⽇志,路径⼀般在/var/log/mysqld.log下⾯[root@LCM01GCM01 ~]# tail -200f /var/log/mysqld.log2018-12-07 T10:00:19.935771Z 0 [ERROR] /usr/sbin/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 2 - No such file or directory)2018-12-07T10:00:19.935795Z 0 [ERROR] Can't start server: can't create PID file: No such file or directory18120718:00:20 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended这个时候我们就明⽩了,/var/run/mysqld/这个⽬录不存在,wu,查找下确实没有这个⽂件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

mysqld_safe
在Unix和NetWare中推荐使用mysqld_safe来启动mysqld服务器。

mysqld_safe增加了一些安全特性,例如当出现错误时重启服务器并向错误日志文件写入运行时间信息。

本节后面列出了NetWare的特定行为。

注释:为了保持同旧版本MySQL的向后兼容性,MySQL二进制分发版仍然包括safe_mysqld作为mysqld_safe的符号链接。

但是,你不应再依赖它,因为再将来将删掉它。

默认情况下,mysqld_safe尝试启动可执行mysqld-max(如果存在),否则启动mysqld。

该行为的含义是:
·在Linux中,MySQL-Max RPM依赖该mysqld_safe的行为。

RPM安装可执行mysqld-max,使mysqld_safe从该点起自动使用可执行命令。

·如果你安装包括mysqld-max服务器的MySQL-Max分发版,后面升级到非
-Max的MySQL版本,mysqld_safe仍然试图运行旧的mysqld-max服务器。

升级时,你应手动删除旧的mysqld-max服务器以确保mysqld_safe运行新的mysqld服务器。

要想越过默认行为并显式指定你想要运行哪个服务器,为mysqld_safe指定
--mysqld或--mysqld-version选项。

mysqld_safe从选项文件的[mysqld]、[server]和[mysqld_safe]部分读取所有选项。

为了保证向后兼容性,它还读取[safe_mysqld]部分,尽管在MySQL 5.1安装中你应将这部分重新命名为[mysqld_safe]。

mysqld_safe支持下面的选项:
· --help
显示帮助消息并退出。

· --autoclose
(只在NetWare中)在NetWare中,mysqld_safe可以保持窗口。

当你关掉mysqld_safe NLM时,窗口不按默认设置消失。

相反,它提示用户输入:*<NLM has terminated; Press any key to close the screen>*如果你想让NetWare自动关闭窗口,在mysqld_safe中使用--autoclose选项。

· --basedir=path
MySQL安装目录的路径。

· --core-file-size=size
mysqld能够创建的内核文件的大小。

选项值传递给ulimit -c。

· --datadir=path
数据目录的路径。

· --defaults-extra-file=path
除了通用选项文件所读取的选项文件名。

如果给出,必须首选该选项。

· --defaults-file=path
读取的代替通用选项文件的选项文件名。

如果给出,必须首选该选项。

· --ledir=path
包含mysqld程序的目录的路径。

使用该选项来显式表示服务器位置。

· --log-error=path
将错误日志写入给定的文件。

参见5.11.1节,“错误日志”。

· --mysqld=prog_name
想要启动的服务器程序名(在ledir目录)。

如果你使用MySQL二进制分发版但有二进制分发版之外的数据目录需要该选项。

· --mysqld-version =suffix
该选项类似--mysqld选项,但你只指定服务器程序名的后缀。

基本名假定为mysqld。

例如,如果你使用--mysqld-version =max,mysqld_safe启动ledir目录中的mysqld-max程序。

如果--mysqld-version的参数为空,mysqld_safe使用目录中的mysqld。

· --nice=priority
使用nice程序根据给定值来设置服务器的调度优先级。

· --no-defaults
不要读任何选项文件。

如果给出,必须首选该选项。

· --open-files-limit=count
mysqld能够打开的文件的数量。

选项值传递给ulimit -n。

请注意你需要用root 启动mysqld_safe来保证正确工作!
· --pid-file=path
进程ID文件的路径。

· --port=port_num
用来帧听TCP/IP连接的端口号。

端口号必须为1024或更大值,除非MySQL
以root系统用户运行。

· --skip-character-set-client-handshake
忽略客户端发送的字符集信息,使用服务器的默认字符集。

(选择该选项,MySQL 的动作与MySQL 4.0相同)。

· --socket=path
用于本地连接的Unix套接字文件。

· --timezone=zone
为给定的选项值设置TZ时区环境变量。

从操作系统文档查阅合法的时区规定格式。

· --user={user_name | user_id}
以用户名user_name或数字用户ID user_id运行mysqld服务器。

(本文中的“用户”指系统登录账户,而不是授权表中的MySQL用户)。

执行mysqld_safe时,必须先给出--defaults-file或--defaults-extra-option,或不使用选项文件。

例如,该命令将不使用选项文件:
mysqld_safe --port=port_num --defaults-file=file_name相反,使用下面的命令:
mysqld_safe --defaults-file=file_name --port=port_num一般情况mysqld_safe 脚本可以启动从源码或二进制MySQL分发版安装的服务器,即使这些分发版将服务器安装到稍微不同的位置。

(参见2.1.5节,“安装布局”)。

mysqld_safe期望下面的其中一个条件是真的:
·可以根据调用mysqld_safe的目录找到服务器和数据库。

在二进制分发版中,mysqld_safe看上去在bin和data目录的工作目录下。

对于源码分发版,为libexec 和var目录。

如果你从MySQL安装目录执行mysqld_safe应满足该条件(例如,二进制分发版为/usr/local/mysql)。

·如果不能根据工作目录找到服务器和数据库,mysqld_safe试图通过绝对路径对它们定位。

典型位置为/usr/local/libexec和/usr/local/var。

实际位置由构建分发版时配置的值确定如果MySQL安装到配置时指定的位置,它们应该是正确的。

因为mysqld_safe试图通过工作目录找到服务器和数据库,只要你从MySQL安装目录运行mysqld_safe,可以将MySQL二进制分发版安装到其它位置:shell> cd mysql_installation_directoryshell> bin/mysqld_safe &如果
mysqld_safe失败,即使从MySQL安装目录调用仍然失败,你可以指定--ledir和
--datadir选项来指示服务器和数据库在你的系统中的安装目录。

一般情况,你不应编辑mysqld_safe脚本。

相反,应使用命令行选项或f 选项文件的[mysqld_safe]部分的选项来配置mysqld_safe。

一般不需要编辑
mysqld_safe来正确启动服务器。

但是,如果你编辑,将来升级MySQL后会覆盖你修改的mysqld_safe版本,因此你应对你修改的版本进行备份以便将来重装。

在NetWare中,mysqld_safe是一个NetWare Loadable Module (NLM),从原Unix shell脚本移植。

它执行:
1. 检查系统和选项。

2. 检查MyISAM表。

3. 保持MySQL服务器窗口。

4. 启动并监视mysqld,如果因错误终止则重启。

5. 将mysqld的错误消息发送到数据目录中的host_name.err 文件。

6. 将mysqld_safe的屏幕输出发送到数据目录中的host_name.safe文件。

相关文档
最新文档