用su - 切换用户,可带环境信息
MySql安装过程
以root用户身份操作
su -
1、 建立组及用户
[iyunv@WebSer]# groupadd mysql
[iyunv@WebSer]# useradd -g mysql
[iyunv@WebSer]# passwd mysql
2、 安装软件
服务端MySQL-server-community-5.1.46-1.rhel5
客户端MySQL-client-community-5.1.46-1.rhel
1) 安装服务端软件
[iyunv@WebSer tools]# rpm -ivhMySQL-server-community-5.1.46-1.rhel5.i386.rpm
2) 检查Mysql默认的端口是3306是否开启
[iyunv@WebSer tools]#netstat –nat
如没有开启可能是linux的服务器火墙关闭了3306端口
[iyunv@WebSer tools]# vi /etc/sysconfig/iptables
加入
-A RH-Firewall-1-INPUT -m state --state NEW-m tcp -p tcp --dport 3306 -j ACCEPT
保存退出
[iyunv@WebSer tools]# service iptablesrestart
Active Internet connections (servers andestablished)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp00 0.0.0.0:33060.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) 安装客户端
[iyunv@WebSertools]# 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即可。
[iyunv@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。
键入以下命令:
[iyunv@test1 local]# /usr/bin/mysqladmin-u root password 123456
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
c、测试是否修改成功
1)不用密码登录
[iyunv@test1 local]# mysql
ERROR1045: Access denied for user: 'root@localhost' (Using password: NO)
显示错误,说明密码已经修改。
2)用修改后的密码登录
[iyunv@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 serverversion: 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目录下,在需要启动时运行下面命令即可。
[iyunv@test1 init.d]# /etc/init.d/mysqlstart
或service mysql start
B、停止
/usr/bin/mysqladmin -u root -pshutdown
或 service mysql stop
C、自动启动
1)察看mysql是否在自动启动列表中
[iyunv@test1 local]# /sbin/chkconfig --list
2)把MySQL添加到你系统的启动服务组里面去
[iyunv@test1 local]# /sbin/chkconfig--addmysql
3)把MySQL从启动服务组里面删除。
[iyunv@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)中。命令如下:
[iyunv@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。
[iyunv@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 -Rmysql: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 mysqlrestart
系统会自动在/home/data/mysql 下建立ibdata1目录
10) 设置数据库默认编码为utf8:
编辑MySQL的配置文件/etc/my.cnf:
[client]
default-character-set = utf8
[mysqld]
default-character-set= utf8
#Service mysqlrestart
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 COLLATEutf8_general_ci;
6) 建表:use 库名;createtable 表名 (字段设定列表);
例如:在刚创建的aaa库中建立表name,表中有id(序号,自动增长),xm(姓名),xb(性别),csny(出身年月)四个字段
use aaa;
mysql> create table name (id int(3) auto_increment not null primary key, xmchar(8),xb char(2),csny date);
可以用describe命令察看刚建立的表结构。
7) 增加记录nsert into name values('','张三','男','1971-10-01');
8) 修改纪录update name set csny='1971-01-10' wherexm='张三';
9) 删库drop database 库名;
10) 删表drop table 表名;
11) 增加字段alter table dbname add column <字段名><字段选项>
12) 修改字段alter table dbname change <旧字段名> <新字段名><选项>
13) 删除字段 alter table dbname dropcolumn <字段名>
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’@’%’ Identifiedby ‘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@localhostidentified by "123";
用新增的用户如果登录不了MySQL,在登录时用如下命令:
mysql -u user_1 –p -h 192.168.113.50(-h后跟的是要登录主机的ip地址)
5、 备份与恢复
1) 备份
例如:将上例创建的aaa库备份到文件back_aaa中
[iyunv@test1 root]# cd /home/data/mysql (进入到库目录,本例库已由val/lib/mysql转到/home/data/mysql,见上述第七部分内容)
[iyunv@test1 mysql]# mysqldump -u root -p --opt aaa > back_aaa
2) 恢复
[iyunv@testmysql]# mysql -u root -p ccc < back_aaa
6、 修改mysql密码
方法1
[iyunv@test1 root]# mysql -u root -p
#请输入你的mysql密码,默认的这空
Enter password:
#执行如下的语句
mysql>set password for `root`@`localhost`=password("your newpassword");
方法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 GRANTOPTION;
GRANT ALL PRIVILEGES ON *.* TO monty@"%"
IDENTIFIED BY ’something’ WITH GRANTOPTION;
可以用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 -h192.168.1.1然后输入密码,就OK了 |