mysql脚本linux
一、启动方式
1、使用linux命令service 启动:
service mysqld start
2、使用 mysqld 脚本启动:
/etc/inint.d/mysqld start
3、使用 safe_mysqld 启动:
safe_mysqld& 命令使用方法及介绍可如下查找:
㈡ linux怎么启动mysql
linux启动mysql的方法:
1、使用linux命令service 启动:service mysqld start
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start
3、使用 safe_mysqld 启动:safe_mysqld&
linux停止的方法:
1、使用 service 启动:service mysqld stop
2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop
3、mysqladmin shutdown
原文至:https://www.py.cn/db/mysql/17368.html
㈢ mysql随Linux开机自动启动
在MySQL的管理过程中 偶尔会遇到一些PC Server宕机或者重启 这时我需要在主机启动后再将MySQL服务启动 一般情况下 这项工作都是简单的 但是 当面临上百台或者更多的MySQL主机的时候 这种 偶尔 可能会很多 这种 偶尔 还会在半夜或者凌晨发生 如果每次都手动操作 这是很繁琐的 更重要的是 如果因此而打断了凌晨的美梦是不值得的
要实现随开启自动启动mysqld 我们需要搞定如下几个问题
Linux开机自动启动脚本放在哪儿?
一般的 作为服务器使用的Linux一般会以 完全多用户模式(Multi User Mode with Neorking) 级别来启动 这种情况下Linux在启动时会运行/etc/rc d/rc d/下的全部脚本 例如我们在这个目录下会看到脚本 /etc/rc d/rc d/S crond 意味着开机启动时会运行S crond脚本
Linux如何运行这些脚本?
既然已经知道自动启动脚本该放在哪儿了 一切就好办 我们只需要将一个启动MySQL的脚本放过去就好了 下面是我们的一个简单的启动脚本v mysqldauto
$vi mysqldauto
#!/bin/sh
# Version: by
/opt/mysql/bin/mysqld_safe user=mysql & #这里需要修改为你的mysqld_safe目录
$chmod +x mysqldauto
$mv mysqldauto /etc/rc d/init d/
$ln s /etc/rc d/init d/mysqldauto /etc/rc d/rc d/S mysqld
这样我们就把创建的mysqldauto脚本放到了/etc/rc d/rc d/下面(注意这里使用了link的方式) mysqld可以自动启动了
这有两个问题需要解释
* * * * * 为什么不直接在目录/etc/rc d/rc d/下创建文件 而要创建一个软连接?这并不是必须的 但是这样做是有很多好处的(后面会解释) 不过这样做至少会看起来更加专业
* * * * * 为什么文件名要用S mysqld?这是规则 在rc d下面的脚本如果以字母S开头 那么执行时Linux会给它传递一个start参数(如果以字母K开头 则会传递stop参数) S后面接个数字 表示了这个脚本的者哪启动顺序 如果目录rc d下还有S *那么它会在S 之前运行 (看到这儿 你可以猜测一下前面我们为什么要创建软连接了)
好了 自此你的mysqld就已经可以随Linux开机自动启动了
怎样做更专业些?
上面这样做 已经可以解决问题了 不过写法多拍差少有些 山寨 下面我们看看怎样改造一下
* * * * * 改造 处理参数start 既然前面提到以字首贺码母S开头的脚本会自动传递一个参数start K则会传递stop 那么我再做如下修改
$vi mysqldauto
#!/bin/sh
# Version: by
MYSQLHOME=/opt/mysql #这里需要修改为你的mysql安装目录
if [ $# ge ];then
mysqldProc=`ps ef|grep E mysqld +safe |grep v grep |wc l`
if [ $ = stop ] ;then
if [ $mysqldProc eq ];then
$MYSQLHOME/bin/mysqladmin uroot shutdown
fi
elif [ $ = start ];then
if [ $mysqldProc eq ];then
$MYSQLHOME/bin/mysqld_safe user=mysql &
fi
fi
fi
做了如此改造后 我们脚本需要接收两个参数start stop了 如果你想让你mysqld在关闭主机的时候自动关闭 那么stop参数就可以起作用了
$ln s /etc/rc d/init d/mysqldauto /etc/rc d/rc d/K mysqld
这里做软连接好处就体现出来了 启动和关闭只需要用一个脚本就可以了
* * * * * 改造 当你面临几十上百台主机的时候 MySQL的启动参数可能会不一样 例如备库启动时可能需要mysqld_safe –user=mysql –read_olny= & 这种情况怎么办呢?这里提供一个解决思路
lishixin/Article/program/MySQL/201311/29483
㈣ linux怎么启动mysql服务
1、首先,我们需要修改mysql的配置文件,一般文件存放在/etc下面,文件名为my.cnf。
㈤ linux环境下,如何实现异地备份mysql,脚本怎么写,已经实现本地自动备份
只要在这个备份脚本下增加一个异地传输功能即可。假定异地服务器建立一个ftp服务器。
则在本地Mysql备份脚本中将现有的文件打包,或者放置一个独立目录,然后上传到Ftp服务器即可。其他部分补齐即可。
ftp-n<<!
open$Dest_Server
user$FtpUserName$FtpPassword
binary
promptoff
cd/backpath
lcd/tmp
put"*.tar.gz"
bye
!
㈥ 紧急求助:linux 下面mysql启动不了 my_print_defaults: command not found
linux 下面mysql启动不了 my_print_defaults: command not found的原因是:
/etc/init.d/mysql这个MySQL的启卜亏动脚本错误,MySQL是使用源代码安装的,一般会提示tarting MySQL Couldn't find MySQL manager or server(@bindir@/mysqld_safe)。
具体解决办法:
键入如下命令:
cd <your MySQL install PATH>
cd bin
.mysqld_safe --user=mysql& #
(6)mysql脚本linux扩展阅读:
mysql的其他报错解决办法:
1、Starting MySQL.Manager of pid-file quit without updating fi[失败卖指]
关于这个错误原因有很多,最大的可能是没有创建测试数据库,可以用/usr/local/mysql/scripts/mysql_install_db –user=mysql命令进行创建;另外一个原因可能是权限设置型配神问题,需要赋予mysql的data权限,可以用chmod -R 命令。
2、FATAL ERROR: Could not find /home/mysql/bin/my_print_defaults If you are using a binary release,you must run this script from
within the directory the archive extracted into. If you compiled
MySQL yourself you must run ‘make install’ first.
这个错误,是没有指明mysql的data路径导致的,可以很简单的进行解决:
vim /etc/my.cnf
在[mysqld] 后面加上路径:
basedir = /usr/local/mysql
datadir =/opt/data;
3、-bash: mysql: command not found
用mysql命令进行登陆mysql报错,原因是没有设置环境变量,需要设置,或者进入到bin目录进行登陆cd /usr/local/mysql/bin
mysql -u root
㈦ Linux启动/停止/重启Mysql数据库的方法
方法一:status;
方法二:select version();
a、启动
1、使用 service 启动:
[root@localhost /]# service mysqld start (5.0版本是mysqld)
[root@szxdb etc]# service mysql start (5.5.7版本是mysql)
2、使用 mysqld 脚本启动:
/etc/inint.d/mysqld start
3、使用 safe_mysqld 启动:
safe_mysqld&
1、使用 service 停止:
service mysqld stop
2、使用 mysqld 脚本停止:
/etc/inint.d/mysqld stop
3、mysqladmin shutdown
c、重启
1、使用 service 启动:
service mysqld restart
service mysql restart (5.5.7版本命令)
2、使用 mysqld 脚本启动:
/etc/init.d/mysqld restart
㈧ linux shell脚本执行mysql mysql数据库在远程服务器上
方法一、适合所有格式的mysql数据库,通过对数据库导出导进写个脚本定时执行:
1.导出整个数据库 mysqlmp -u 用户名 -p 数据库名 > 导出的文件名 mysqlmp -u wcnc -p smgp_apps_wcnc > /存放路径/wcnc.sql
2.导出一个表 mysqlmp -u 用户名 -p 数据库名 表名> 导出的文件名 mysqlmp -u wcnc -p smgp_apps_wcnc users> /存放路径/wcnc_users.sql
3.导出一个数据库结构 mysqlmp -u wcnc -p -d --add-drop-table smgp_apps_wcnc >/存放路径/wcnc_db.sql
定义:
-d 没有数据
--add-drop-table 在每个create语句之前增加一个drop table
4.导入数据库 常用source 命令 进入mysql数据库控制台:
如mysql -u root -p mysql>use 数据库
方法二、针对mysql数据表格式为MyISAM的
假如数据文件在/var/lib/mysql
那么直接写个脚本
cp -r /var/lib/mysql /备份到的文件夹路径
隔机备份用rsync增量,或定时完整备份。
㈨ 如何在linux下安装mysql数据库并配置
更多详情请参考网络经验,
http://jingyan..com/article/e4511cf33cdc992b845eafc2.html
或者,
http://blog.csdn.net/shuxiao9058/article/details/6658517
1、下载MySQL的安装文件
安装MySQL需要下面两个文件:
MySQL-server-5.0.9-0.i386.rpm
MySQL-client-5.0.9-0.i386.rpm
下载地址为:http://dev.mysql.com/downloads/mysql/5.0.html,打开此网页,下拉网页找到“Linux x86 RPM downloads”项,找到“Server”和“Client programs”项,下载需要的上述两个rpm文件。
2、安装MySQL
rpm
文件是Red Hat公司开发的软件安装包,rpm可让Linux在安装软件包时免除许多复杂的手续。该命令在安装时常用的参数是 –ivh
,其中i表示将安装指定的rmp软件包,V表示安装时的详细信息,h表示在安装期间出现“#”符号来显示目前的安装过程。这个符号将持续到安装完成后才停
止。
1)安装服务器端
在有两个rmp文件的目录下运行如下命令:
[root@test1 local]# rpm -ivh MySQL-server-5.0.9-0.i386.rpm
显示如下信息。
warning: MySQL-server-5.0.9-0.i386.rpm: V3 DSA signature: NOKEY, key ID 5072e1f5
Preparing... ########################################### [100%]
1:MySQL-server ########################################### [100%]
。。。。。。(省略显示)
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h test1 password 'new-password'
。。。。。。(省略显示)
Starting mysqld daemon with databases from /var/lib/mysql
如出现如上信息,服务端安装完毕。测试是否成功可运行netstat看Mysql端口是否打开,如打开表示服务已经启动,安装成功。Mysql默认的端口是3306。
[root@test1 local]# netstat -nat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
上面显示可以看出MySQL服务已经启动。
2)安装客户端
运行如下命令:
[root@test1 local]# rpm -ivh MySQL-client-5.0.9-0.i386.rpm
warning: MySQL-client-5.0.9-0.i386.rpm: V3 DSA signature: NOKEY, key ID 5072e1f5
Preparing... ########################################### [100%]
1:MySQL-client ########################################### [100%]
显示安装完毕。
用下面的命令连接mysql,测试是否成功。
三、登录MySQL
登录MySQL的命令是mysql, mysql 的使用语法如下:
mysql [-u username] [-h host] [-p[password]] [dbname]
username 与 password 分别是 MySQL 的用户名与密码,mysql的初始管理帐号是root,没有密码,注意:这个root用户不是Linux的系统用户。MySQL默认用户是root,由于初始没有密码,第一次进时只需键入mysql即可。
[root@test1 local]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.0.16-standard
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
出现了“mysql>”提示符,恭喜你,安装成功!
增加了密码后的登录格式如下:
mysql -u root -p
Enter password: (输入密码)
其中-u后跟的是用户名,-p要求输入密码,回车后在输入密码处输入密码。
注意:这个mysql文件在/usr/bin目录下,与后面讲的启动文件/etc/init.d/mysql不是一个文件。
四、MySQL的几个重要目录
MySQL安装完成后不象SQL Server默认安装在一个目录,它的数据库文件、配置文件和命令文件分别在不同的目录,了解这些目录非常重要,尤其对于Linux的初学者,因为 Linux本身的目录结构就比较复杂,如果搞不清楚MySQL的安装目录那就无从谈起深入学习。
下面就介绍一下这几个目录。
1、数据库目录
/var/lib/mysql/
2、配置文件
/usr/share/mysql(mysql.server命令及配置文件)
3、相关命令
/usr/bin(mysqladmin mysqlmp等命令)
4、启动脚本
/etc/rc.d/init.d/(启动脚本文件mysql的目录)
五、修改登录密码
MySQL默认没有密码,安装完毕增加密码的重要性是不言而喻的。
1、命令
usr/bin/mysqladmin -u root password 'new-password'
格式:mysqladmin -u用户名 -p旧密码 password 新密码
2、例子
例1:给root加个密码123456。
键入以下命令 :
[root@test1 local]# /usr/bin/mysqladmin -u root password 123456
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
3、测试是否修改成功
1)不用密码登录
[root@test1 local]# mysql
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
显示错误,说明密码已经修改。
2)用修改后的密码登录
[root@test1 local]# mysql -u root -p
Enter password: (输入修改后的密码123456)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 4.0.16-standard
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
成功!
这是通过mysqladmin命令修改口令,也可通过修改库来更改口令。
六、启动与停止
1、启动
MySQL安装完成后启动文件mysql在/etc/init.d目录下,在需要启动时运行下面命令即可。
[root@test1 init.d]# /etc/init.d/mysql start
2、停止
/usr/bin/mysqladmin -u root -p shutdown
3、自动启动
1)察看mysql是否在自动启动列表中
[root@test1 local]# /sbin/chkconfig –list
2)把MySQL添加到你系统的启动服务组里面去
[root@test1 local]# /sbin/chkconfig – add mysql
3)把MySQL从启动服务组里面删除。
[root@test1 local]# /sbin/chkconfig – del mysql
七、更改MySQL目录
MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步:
1、home目录下建立data目录
cd /home
mkdir data
2、把MySQL服务进程停掉:
mysqladmin -u root -p shutdown
3、把/var/lib/mysql整个目录移到/home/data
mv /var/lib/mysql /home/data/
这样就把MySQL的数据文件移动到了/home/data/mysql下
4、找到my.cnf配置文件
如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf)中。命令如下:
[root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
5、编辑MySQL的配置文件/etc/my.cnf
为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。 修改socket=/var/lib/mysql/mysql.sock一行中等号右边的值为:/home/mysql/mysql.sock 。操作如下:
vi my.cnf (用vi工具编辑my.cnf文件,找到下列数据修改之)
# The MySQL server
[mysqld]
port = 3306
#socket = /var/lib/mysql/mysql.sock(原内容,为了更稳妥用“#”注释此行)
socket = /home/data/mysql/mysql.sock (加上此行)
6、修改MySQL启动脚本/etc/rc.d/init.d/mysql
最后,需要修改MySQL启动脚本/etc/rc.d/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等号右边的路径改成你现在的实际存放路径:home/data/mysql。
[root@test1 etc]# vi /etc/rc.d/init.d/mysql
#datadir=/var/lib/mysql (注释此行)
datadir=/home/data/mysql (加上此行)
7、重新启动MySQL服务
/etc/rc.d/init.d/mysql start
或用reboot命令重启Linux
如果工作正常移动就成功了,否则对照前面的7步再检查一下。
八、MySQL的常用操作
注意:MySQL中每个命令后都要以分号;结尾。
1、显示数据库
mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.04 sec)
Mysql刚安装完有两个数据库:mysql和test。mysql库非常重要,它里面有MySQL的系统信息,我们改密码和新增用户,实际上就是用这个库中的相关表进行操作。
2、显示数据库中的表
mysql> use mysql; (打开库,对每个库进行操作就要打开此库,类似于foxpro )
Database changed
mysql> show tables;
+-----------------+
| Tables_in_mysql |
+-----------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+-----------------+
6 rows in set (0.01 sec)
3、显示数据表的结构:
describe 表名;
4、显示表中的记录:
select * from 表名;
例如:显示mysql库中user表中的纪录。所有能对MySQL用户操作的用户都在此表中。
Select * from user;
5、建库:
create database 库名;
例如:创建一个名字位aaa的库
mysql> create databases aaa;
6、建表:
use 库名;
create table 表名 (字段设定列表);
例如:在刚创建的aaa库中建立表name,表中有id(序号,自动增长),xm(姓名),xb(性别),csny(出身年月)四个字段
use aaa;
mysql> create table name (id int(3) auto_increment not null primary key, xm char(8),xb char(2),csny date);
可以用describe命令察看刚建立的表结构。
mysql> describe name;
+-------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+----------------+
| id | int(3) | | PRI | NULL | auto_increment |
| xm | char(8) | YES | | NULL | |
| xb | char(2) | YES | | NULL | |
| csny | date | YES | | NULL | |
+-------+---------+------+-----+---------+----------------+
7、增加记录
例如:增加几条相关纪录。
mysql> insert into name values('','张三','男','1971-10-01');
mysql> insert into name values('','白云','女','1972-05-20');
可用select命令来验证结果。
mysql> select * from name;
+----+------+------+------------+
| id | xm | xb | csny |
+----+------+------+------------+
| 1 | 张三 | 男 | 1971-10-01 |
| 2 | 白云 | 女 | 1972-05-20 |
+----+------+------+------------+
8、修改纪录
例如:将张三的出生年月改为1971-01-10
mysql> update name set csny='1971-01-10' where xm='张三';
9、删除纪录
例如:删除张三的纪录。
mysql> delete from name where xm='张三';
10、删库和删表
drop database 库名;
drop table 表名;
九、增加MySQL用户
格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"
例1、增加一个用户user_1密码为123,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MySQL,然后键入以下命令:
mysql> grant select,insert,update,delete on *.* to user_1@"%" Identified by "123";
例1增加的用户是十分危险的,如果知道了user_1的密码,那么他就可以在网上的任何一台电脑上登录你的MySQL数据库并对你的数据为所欲为了,解决办法见例2。
例
2、增加一个用户user_2密码为123,让此用户只可以在localhost上登录,并可以对数据库aaa进行查询、插入、修改、删除的操作
(localhost指本地主机,即MySQL数据库所在的那台主机),这样用户即使用知道user_2的密码,他也无法从网上直接访问数据库,只能通过
MYSQL主机来操作aaa库。
mysql>grant select,insert,update,delete on aaa.* to user_2@localhost identified by "123";
用新增的用户如果登录不了MySQL,在登录时用如下命令:
mysql -u user_1 -p -h 192.168.113.50 (-h后跟的是要登录主机的ip地址)
十、备份与恢复
1、备份
例如:将上例创建的aaa库备份到文件back_aaa中
[root@test1 root]# cd /home/data/mysql (进入到库目录,本例库已由val/lib/mysql转到/home/data/mysql,见上述第七部分内容)
[root@test1 mysql]# mysqlmp -u root -p --opt aaa > back_aaa
2、恢复
[root@test mysql]# mysql -u root -p ccc < back_aaa
另外操作:修改mysql字符编码成为UTF8
启动mysql后,以root登录mysql
isher@isher-ubuntu:~$ mysql -u root
>show variables like 'character%'; #执行编码显示
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
在某些时候,我们续要修改mysql默认数据库的编码,以保证某些迁移的程序可以正常显示,编辑my.cnf文件进行编码修改,windows可以直接用Mysql Server Instance Config Wizard 进行设置
在linux下修改3个my.cnf的1个/etc/mysql/my.cnf文件
找到客户端配置[client] 在下面添加
default-character-set=utf8 默认字符集为utf8
在找到[mysqld] 添加
default-character-set=utf8 默认字符集为utf8
init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)
修改好后,重新启动mysql 即可,查询一下show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
此方法用于标准mysql版本同样有效,对于/etc/my.cnf文件,需要从mysql/support-files的文件夹cp my-large.cnf一份到/etc/my.cnf。
㈩ linux系统shell脚本去除mysql报错信息
shell脚本中执行mysql 语句
去除warning using a password on the command line interface can be insecure信息
使用mysql参数的方法
mysql -u pass -D $db -e "select host from user;"
如
/usr/local/u-mail/service/mysql/bin/mysql -uumail -p cat /usr/local/u-mail/config/纳唤消mysql_password.conf -e 'use umail;select count(*) from core_mailbox where domain="comingchina.net";'
可以使用
2>&1 |grep -v Warning
2>&1 的意思就是将标准错误重定向到标准输出。然后在使用 grep -v去除
& 1 1标识标准输出链腔,stdout。
2 表示标洞知准错误,stderr。