一、安装MySQL
先确保你的系统连网。使用命令yum安装MySQL。yum命令需要root权限执行。
#yum install mysql
会列出将要安装和更新的包,有个选项[Y/N],选择Y,安装mysql。安装了mysql后,再安装mysql-server。
#yum intall mysql-server
同样也选择Y,安装mysql-server。
【卸载命令】如果之前安装过mysql,想要卸载重新安装,卸载命令如下:
#rpm –e mysql
#rpm –e mysql-server
可能会报错:error. “mysql” specifies multiple packages,意思是mysql可能指很多包,系统不知道应该删除哪一个,你可以使用以下命令来查看:
#rpm –qa|grep mysql
然后会列出已经安装了的mysql包。然后可以一个一个的删除,还可能出现的情况是,因为你用的是64位的机子,然后安装了32位和64位的mysql包,但他们的名字是一样的,还有一种情况是,删除的时候有依赖关系。你可以上网查相应的解决方法,不过看下面的命令显然会更快捷。
#rpm –qa|grep mysql | xargs rpm –e –-nodeps -–allmatches
看参数名称就可以知道,--nodeps解决了依赖关系,--allmatches解决了同名包问题,都属于暴力卸载。
卸载了后就可以再安装了。
二、启动MySQL
使用service命令启动、停止和重启MySQL。
#service mysqld start //启动
#service mysqld stop //停止
#service mysqld restart //重启
注意,这三个命令里面,是mysqld,后面还有字母d。这是MySQL服务的名称。或者使用一下命令启动、停止和重启MySQL:
#/etc/init.d/mysqld start
#/etc/init.d/mysqld stop
#/etc/init.d/mysqld retart
三、修改MySQL密码
这里只写在丢失了root密码的情况。步骤如下:
1) 停止mysqld服务
#service mysqld stop 或#/etc/init.d/mysqld stop
2)安装模式进入mysql
#mysqld_safe --user=mysql --skip-grant-tables –skip-networking &
#mysql -uroot -p
Enterpassword: (不输入密码,直接按回车)
mysql>update mysql.user set password=PASSWORD(‘你要设置的密码’) where user=’root’;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql>flush privileges;
Query Ok, 0 rows affected (0.00 sec)
mysql>quit;
注意,在mysql的每一条命令(即mysql>的命令)最后都要加分号。然后就可以使用你设置的密码登陆了。
#mysql –uroot –p
Enter password:
下面这个没试过,暂时放上来。
方法二:
直接使用/etc/mysql/debian.cnf文件中[client]节提供的用户名和密码:
# mysql -udebian-sys-maint -p
Enter password: <输入[client]节的密码>
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
mysql> FLUSH PRIVILEGES;
mysql> quit
# mysql -uroot -p
Enter password: <输入新设的密码newpassword>
mysql>
如果发现启动不了mysql,要先查看日志,日志存放在/var/log/mysql.log
进入目录/var/log/用gedit打开mysql.log文件,或者用命令行less /var/log/mysql.log都可以,建议用命令行查看问题。有时候是因为端口被占用,例如:
[ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
[ERROR] Do you already have another mysqld server running on port: 3306 ?
使用命令netstat查看端口使用情况,命令行如下:
#netstat -anp | grep "3306"
如果端口没有被占用,不会显示什么,如果端口被占用,可能显示如下:
tcp 0 0 : : : 3306 : : : * LISTEN 28194/mysqld
使用kill命令杀掉进程号:28194,命令如下
# kill -9 28194
kill掉进程后,再用命令行netstat -anp|grep "3306"就没有东西了。
另外,如果登录不了MySQL,并且无论怎么修改密码,还是登录不了,例如出现如下错误:
#mysql -u root -p
Enter password:
输入密码后者没有密码按回车后,都出现下面情况
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
这时候可以清理原来数据,重新配置一份数据了。命令行查看配置:
# ps aux | grep mysql
可能显示如下:
root 5978 0.0 0.0 ...... /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql 6214 0.0 0.0 ..... /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
找到了datadir=/var/lib/mysql,只要删除该datadir目录下的数据文件,重新启动mysqld服务,自动生成一份即可。如果数据库里有东西,需要手动把数据库拷贝出去,重新生成后再拷贝回来即可。删除datadir下文件命令如下:
#cd /var/lib/mysql
/var/lib/mysql目录下通常会有下面几个文件:
ibdata1 ib_logfile0 ib_logfile1 mysql mysql.sock test
删除,
#rm -rf *
然后重启mysqld服务
# service mysqld restart
重新用root登录,此时密码为空
#mysql -u root
然后修改root密码以及声称新的用户和密码。
#update mysql.user set password=password('new password') where user='root';
MySQL创建、删除用户命令(http://www.cnblogs.com/fly1988happy/archive/2011/12/15/2288554.html)如下:
MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束):
1.新建用户
- 登录MYSQL:
@>mysql -u root -p
@>密码
- 创建用户:
mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));
这样就创建了一个名为:test 密码为:1234 的用户。
注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。
- 然后登录一下:
mysql>exit;
@>mysql -u test -p
@>输入密码
mysql>登录成功
2.为用户授权
授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
- 登录MYSQL(有ROOT权限),这里以ROOT身份登录:
@>mysql -u root -p
@>密码
- 首先为用户创建一个数据库(testDB):
mysql>create database testDB;
- 授权test用户拥有testDB数据库的所有权限(某个数据库的所有权限):
mysql>grant all privileges on testDB.* to test@localhost identified by '1234';
mysql>flush privileges;//刷新系统权限表
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
- 如果想指定部分权限给一用户,可以这样来写:
mysql>grant select,update on testDB.* to test@localhost identified by '1234';
mysql>flush privileges; //刷新系统权限表
- 授权test用户拥有所有数据库的某些权限:
mysql>grant select,delete,update,create,drop on *.* to test@"%" identified by "1234";
//test用户对所有数据库都有select,delete,update,create,drop 权限。
//@"%" 表示对所有非本地主机授权,不包括localhost。(localhost地址设为127.0.0.1,如果设为真实的本地地址,不知道是否可以,没有验证。)
//对localhost授权:加上一句grant all privileges on testDB.* to test@localhost identified by '1234';即可。
3.删除用户
@>mysql -u root -p
@>密码
mysql>Delete FROM user Where User='test' and Host='localhost';
mysql>flush privileges;
mysql>drop database testDB; //删除用户的数据库
删除账户及权限:>drop user 用户名@'%';
>drop user 用户名@ localhost;
4.修改指定用户密码
@>mysql -u root -p
@>密码
mysql>update mysql.user set password=password('新密码') where User="test" and Host="localhost";
mysql>flush privileges;
5.列出所有数据库
mysql>show database;
6.切换数据库
mysql>use '数据库名';
7.列出所有表
mysql>show tables;
8.显示数据表结构
mysql>describe 表名;
9.删除数据库和数据表
mysql>drop database 数据库名;
mysql>drop table 数据表名;