用 su - 切换用户,可带环境信息
MySql 安装过程
以 root 用户身份操作
su -
1、 建立组及用户
[root@WebSer]# groupadd mysql
[root@WebSer]# useradd -g mysql
[root@WebSer]# passwd mysql
2、 安装软件
服务端 MySQL-server-community-5.1.46-1.rhel5
客户端 MySQL-client-community-5.1.46-1.rhel
1) 安装服务端软件
[root@WebSer tools]# rpm -ivh MySQL-server-community-5.1.46-1.rhel5.i386.rpm
2) 检查 Mysql 默认的端口是 3306 是否开启
[root@WebSer tools]#netstat –nat
如没有开启可能是 linux 的服务器火墙关闭了 3306 端口
[root@WebSer tools]# vi /etc/sysconfig/iptables
加入
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
保存退出
[root@WebSer tools]# service iptables restart
Active Internet connections (servers and
established)
Proto Recv-Q Send-Q Local Address
Foreign Address State
tcp00 0.0.0.0:3306
0.0.0.0:*
LISTEN
上面显示可以看出
MySQL
服务已经启动。
注:如果Windows 的客户端不能访问linux 的服务器,远程报错:ERROR 2003(HY000):Can't connect to MySQL server on '192.168.0.249' (10065) 是linux 的服务器火墙关闭了3306 端口,解决方法同上。
3) 安装客户端
[root@WebSer tools]# rpm -ivh MySQL- client -community-5.1.46-1.rhel5.i386.rpm
4) 登录 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
不是一个文件。
5) MySQL 的几个重要目录
MySQL
安装完成后不象
SQL Server
默认安装在一个目录,它的数据库文件、配置文件和命令文件分别在不同的目录,了解这些目录非常重要,尤其对于
Linux
的初学者,因为
Linux
本身的目录结构就比较复杂,如果搞不清楚
MySQL
的安装目录那就无从谈起深入学习。
下面就介绍一下这几个目录。
1
、数据库目录
/var/lib/mysql/
2
、配置文件
/usr/share/mysql
(
mysql.server
命令及配置文件)
3
、相关命令
/usr/bin(mysqladmin mysqldump
等命令
)
4
、启动脚本
/etc/rc.d/init.d/
(启动脚本文件
mysql
的目录)
6) 修改登录密码
MySQL
默认没有密码,安装完毕增加密码的重要性是不言而喻的。
a
、命令
usr/bin/mysqladmin -u root password
'new-password'
格式:
mysqladmin
-u
用户名
-p
旧密码
password
新密码
b
、例子
例
1
:给
root
加个密码
123456
。
键入以下命令
:
[root@test1 local]# /usr/bin/mysqladmin
-u root password 123456
注:因为开始时
root
没有密码,所以
-p
旧密码一项就可以省略了。
c
、测试是否修改成功
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
命令修改口令,也可通过修改库来更改口令。
7) 启动与停止
A
、启动
MySQL
安装完成后启动文件
mysql
在
/etc/init.d
目录下,在需要启动时运行下面命令即可。
[root@test1 init.d]# /etc/init.d/mysql
start
或
service mysql start
B
、停止
/usr/bin/mysqladmin -u root -p
shutdown
或
service mysql stop
C
、自动启动
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
8) 更改 MySQL 目录
MySQL
默认的数据文件存储目录为
/var/lib/mysql
。假如要把目录移到
/home/data
下需要进行下面几步:
a
、
home
目录下建立
data
目录
cd /home
mkdir data
b
、把
MySQL
服务进程停掉:
mysqladmin -u root -p shutdown
c
、把
/var/lib/mysql
整个目录移到
/home/data
mv /var/lib/mysql
/home/data/
这样就把
MySQL
的数据文件移动到了
/home/data/mysql
下
d
、找到
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
e
、编辑
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
(加上此行)
f
、修改
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
(加上此行)
g
、重新启动
MySQL
服务
/etc/rc.d/init.d/mysql
start
或用
reboot
命令重启
Linux
如果工作正常移动就成功了,否则对照前面的
7
步再检查一下。
h 、将 mysql 启动权限赋给 mysql 用户
chown -R mysql:mysql /home/data/mysql
9) 设置 mysql 数据库默认使用 InnoDB 数据引擎
编辑 MySQL 的配置文件 /etc/my.cnf :
# The MySQL server
[mysqld]
default-storage-engine=INNODB
innodb_data_home_dir = /home/data/mysql
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /home/data/mysql
#Service mysql restart
系统会自动在 /home/data/mysql 下建立 ibdata1 目录
10) 设置数据库默认编码为 utf8 :
编辑 MySQL 的配置文件 /etc/my.cnf :
[client]
default-character-set = utf8
[mysqld]
default-character-set = utf8
#Service mysql restart
11) 添加远程登录权限
格式: grant 权限 on 数据库对象 to 用户
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> quit
到些 MYSQL 软件全部安装完成。
3、 MySQL 的常用操作
1) 显示数据库 show databases;
2) 进入数据库 use mysql
3) 显示数据库中的表 show tables;
4) 显示数据表的结构: describe 表名 ;
5) 建库: create database 库名 ;
如: CREATE DATABASE tvscs DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
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
命令察看刚建立的表结构。
7) 增加记录 nsert into name values('',' 张三 ',' 男 ','1971-10-01');
8) 修改纪录 update name set csny='1971-01-10' where xm=' 张三 ';
9) 删库 drop database 库名 ;
10) 删表 drop table 表名;
11) 增加字段 alter table dbname add column < 字段名 >< 字段选项 >
12) 修改字段 alter table dbname change < 旧字段名 > < 新字段名 >< 选项 >
13) 删除字段 alter table dbname drop column < 字段名 >
14) 修改表名
15)
4、 增加 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
地址)
5、 备份与恢复
1) 备份
例如:将上例创建的 aaa 库备份到文件 back_aaa 中
[root@test1 root]# cd /home/data/mysql (
进入到库目录,本例库已由
val/lib/mysql
转到
/home/data/mysql
,见上述第七部分内容
)
[root@test1 mysql]# mysqldump -u root -p --opt aaa > back_aaa
2) 恢复
[root@test mysql]# mysql -u root -p ccc < back_aaa
6、 修改 mysql 密码
方法
1
[root@test1 root]# mysql -u root -p
#
请输入你的
mysql
密码,默认的这空
Enter password:
#
执行如下的语句
mysql>set password for `root`@`localhost`=password("your new
password");
方法
2
mysqladmin -u root -p password mypasswd
输入这个命令后,需要输入
root
的原密码,然后
root
的密码将改为
mypasswd
。
把命令里的
root
改为你的用户名,你就可以改你自己的密码了。
增加用户,授于权限
GRANT ALL PRIVILEGES ON *.* TO primadbadmin@localhost
IDENTIFIED BY 'AU6788aKADG' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO monty@localhost
IDENTIFIED BY ’something’ WITH GRANT
OPTION;
GRANT ALL PRIVILEGES ON *.* TO monty@"%"
IDENTIFIED BY ’something’ WITH GRANT
OPTION;
可以用
GRANT
命令
,
格式
∶
GRANT
权限
ON
库名
.
表名
TO
新用户名
@
主机名
IDENTIFIED BY ‘
密码
‘;
常用
mysql
数据库操作命令总结
7、 卸载 mysql
rpm -qa|grep -i mysql
rpm -ev MySQL-server-community-5.1.46-1.rhel5
rpm -ev MySQL-client-community-5.1.46-1.rhel5
卸载后 /var/lib/mysql 中的数据及 /etc/my.cnf 不会删除,如果确定没用后就手工删除
rm -f /etc/my.cnf
rm -rf /var/lib/mysql
rm -rf /usr/bin/mysql*
8、 <!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> <w:LsdException Locked="false" Name="Default Paragraph Font"/> </w:LatentStyles> </xml><![endif]--><!-- [if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->
使用网上介绍的方法修改
root
用户的密码:
# mysqladmin -uroot -p password 'newpassword'
Enter password:
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'
现在终于被我找到了解决方法,如下(请先测试方法三,谢谢!):
方法一:
# /etc/init.d/mysql stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysql restart
# mysql -uroot -p
Enter password: <
输入新设的密码
newpassword>
mysql>
mysql -u xx -p -h
192.168.1.1
然后输入密码,就
OK
了