您的位置:首页 > Web前端

Fedora安装MySQL及使用

2016-04-25 09:51 501 查看
一、安装MySQL

         先确保你的系统连网。使用命令yum安装MySQL。yum命令需要root权限执行。

         #yum install mysql

         会列出将要安装和更新的包,有个选项[Y/N],选择Y,安装mysql。安装了mysql后,再安装mysql-server。

         注:安装的是mariadb(mysql的一个分支)

           #systemctl start mysqld.service

         #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 数据表名;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: